本地Github Action Runner调用Terser报错:node.exe路径无法识别
本地GitHub Action Runner里node.exe路径识别问题的解决办法
几个实用的修复方案
1. 直接写node.exe的绝对路径
命令行能跑是因为你的用户环境变量里有node路径,但Action Runner的PowerShell会话可能没加载全。直接用绝对路径调用就没问题:
& 'C:\Program Files\nodejs\node.exe' ./node_modules/terser/bin/terser.js [你的压缩参数]
要是用nvm管理node,路径得换成你nvm安装的具体版本路径,比如C:\Users\<你的用户名>\AppData\Roaming\nvm\v18.17.0\node.exe
2. 给Runner刷新环境变量
本地Runner启动的PowerShell可能用的是受限环境变量,先在YAML里刷一遍系统变量:
steps: - name: 刷新系统环境变量 run: | $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") - name: 执行Terser压缩 run: | node ./node_modules/terser/bin/terser.js [你的压缩参数]
3. 用npm脚本间接调用Terser
最省心的方式是在项目package.json里定义压缩脚本,npm会自动处理路径问题:
先在package.json里加这段:
"scripts": { "minify-js": "terser src/*.js -o dist/minified.js", "minify-css": "terser src/*.css -o dist/minified.css" }
然后Action YAML里这么写:
steps: - name: 安装依赖 run: npm install - name: 压缩JS文件 run: npm run minify-js - name: 压缩CSS文件 run: npm run minify-css
4. 检查Runner服务的运行账户
如果本地Runner是Windows服务模式运行的,默认用的是Local System账户,这个账户的环境变量和你登录用户的不一样。改成你常用的用户就行:
- 打开服务管理器,找到
GitHub Actions Runner服务 - 右键选属性→登录→点“此账户”,输入你的用户账号和密码
- 重启服务后再跑Action
内容的提问来源于stack exchange,提问作者gabriel
相关产品推荐
相关产品推荐

