这个错误是因为你在 Windows 系统 上尝试直接运行 .sh
(Shell 脚本)文件,而 Windows 默认不支持 Unix/Linux 的 Shell 命令。以下是几种解决方案:
解决方案 1:使用 Git Bash(推荐)
如果你安装了 Git for Windows,它会自带 Git Bash,可以运行 .sh
文件:
- 修改
package.json
:"scripts": { "dev": "bash ./scripts/run_dev.sh --env=dev" }
- 运行:
npm run dev
解决方案 2:转换为 Windows 批处理文件(.bat)
如果不想依赖 Git Bash,可以 将 .sh
脚本转换成 .bat
脚本:
- 新建
run_dev.bat
(放在./scripts/
目录下):@echo off REM 这里是原 run_dev.sh 的命令,改成 Windows 可执行的格式 node server.js --env=dev
- 修改
package.json
:"scripts": { "dev": ".\\scripts\\run_dev.bat --env=dev" }
- 运行:
npm run dev
解决方案 3:使用 WSL(Windows Subsystem for Linux)
如果你使用 WSL(适用于 Linux 的 Windows 子系统),可以这样运行:
- 修改
package.json
:"scripts": { "dev": "wsl ./scripts/run_dev.sh --env=dev" }
- 运行:
npm run dev
解决方案 4:使用 shx
(跨平台 Shell 命令)
- 安装
shx
:npm install --save-dev shx
- 修改
package.json
:"scripts": { "dev": "shx ./scripts/run_dev.sh --env=dev" }
- 运行:
npm run dev
解决方案 5:直接使用 Node.js 替代 Shell 脚本
如果 run_dev.sh
只是运行 Node.js 命令,可以直接在 package.json
里写:
"scripts": {
"dev": "node server.js --env=dev"
}
然后运行:
npm run dev
总结
方案 | 适用场景 | 备注 |
---|---|---|
Git Bash | 已安装 Git for Windows | 推荐,最接近 Linux 环境 |
.bat 转换 | 纯 Windows 环境 | 需手动改脚本 |
WSL | 已安装 WSL | 适合 Linux 兼容环境 |
shx | 需要跨平台支持 | 需额外安装 |
直接 Node 命令 | 脚本较简单 | 无需 Shell |
推荐做法:
- 个人开发 → Git Bash(
bash ./scripts/run_dev.sh
) - 团队项目 → 提供
.bat
和.sh
双版本,或者用shx
跨平台支持
这样,你的 npm run dev
就能在 Windows 上正常运行了! 🚀