Meteor-Now部署报错“sh: meteor: not found”求助
解决meteor-now部署时"sh: meteor: not found"的问题
这个错误的核心原因是ZEIT Now的部署环境中没有预装Meteor CLI,而你的package.json里的start脚本直接调用了meteor run,自然会找不到命令。下面给你两个可行的解决方案:
方案一:使用Meteor生产构建包部署(推荐)
这种方式不需要依赖部署环境中的Meteor CLI,是更稳定的生产部署方式:
- 本地构建生产版本
在你的Meteor项目根目录执行以下命令,生成可直接运行的生产构建包:
meteor build ../my-app-bundle --directory
执行完成后,上级目录的my-app-bundle文件夹里会出现一个bundle目录,这就是我们需要的生产包。
- 调整bundle内的配置
进入bundle目录,修改里面的package.json:- 将
scripts中的start改为:"start": "node main.js" - 安装服务端依赖:
- 将
cd bundle/programs/server npm install
- 部署bundle目录
现在直接用meteor-now部署这个bundle目录即可:
cd ../.. # 回到bundle目录 meteor-now
方案二:修改项目配置让部署环境自动安装Meteor CLI
如果你不想提前构建,也可以让Now在部署过程中自动安装Meteor:
- 在项目根目录创建
now.json
添加以下配置,指定安装Meteor的命令:
{ "builds": [ { "src": "package.json", "use": "@now/node", "config": { "installCommand": "npm install && curl https://install.meteor.com/ | sh" } } ], "env": { "PATH": "/usr/local/bin:$PATH" } }
这个配置会让Now在安装依赖时同时安装Meteor,并确保Meteor的命令在PATH中能被找到。
- 重新部署
执行meteor-now或者通过ZEIT Client重新部署,此时部署环境会先安装Meteor,再运行你的start脚本。
额外提示
- 检查你的
meteor-now是否是最新版本,旧版本可能存在兼容性问题:
npm update -g meteor-now
- 如果你用的是Meteor 1.8+,官方推荐使用
meteor build的方式部署,避免依赖环境中的Meteor CLI。
内容的提问来源于stack exchange,提问作者rlated
相关产品推荐
相关产品推荐

