Heroku部署Nuxt+Express服务端应用启动报错sh:1:nuxt:not found
问题根因分析
你遇到的报错核心是 sh: 1: nuxt: not found,和Express服务完全无关,报错触发时还没有到加载Express服务的步骤,也不需要你在本地提前执行构建操作,你配置的heroku-postbuild钩子已经可以让Heroku在部署阶段自动完成构建。
这个错误的本质是Heroku的启动环境找不到nuxt命令的执行路径:你本地开发时可能全局安装过nuxt,所以直接执行nuxt start可以正常运行,但Heroku的生产环境没有安装全局nuxt包,直接写nuxt start会找不到对应可执行文件。
解决方案
直接修改你package.json中的scripts配置,将start脚本改为调用本地node_modules中的nuxt可执行文件即可:
{ "scripts": { // 其他脚本保持不变 "start": "npx nuxt start" // 也可以写为 "start": "./node_modules/.bin/nuxt start" } }
可选校验步骤
如果修改后还是报错,可以临时在heroku-postbuild钩子中增加校验命令,确认nuxt依赖是否正常安装:
{ "scripts": { "heroku-postbuild": "npm run build && ls node_modules/.bin | grep nuxt" } }
部署后查看构建日志,如果能看到nuxt的输出,就说明依赖安装正常,问题只出在启动命令的路径上。
内容的提问来源于stack exchange,提问作者Jack Sumner
相关产品推荐
相关产品推荐

