Heroku部署报错:SyntaxError: Use of const in strict mode 解决问询
解决Heroku部署时
SyntaxError: Use of const in strict mode问题 嘿,这个问题我之前踩过一模一样的坑!你猜的完全没错,核心原因就是本地和Heroku使用的Node.js版本不匹配——老版本的Node(比如v0.10.x及更早)在严格模式下不支持ES6的const语法,这才抛出了这个错误。下面是一步步的解决办法:
1. 确认本地与Heroku的Node版本
- 本地执行
node --version,记下你的版本号(比如v14.17.0) - 注意:别直接用
heroku run node --version看Heroku的版本!这个命令查的是运行时dyno的版本,而构建应用时用的版本才是关键。正确的方式是看Heroku构建日志里的Node版本,或者直接通过配置指定版本。
2. 强制Heroku使用与本地一致的Node版本
有两种简单的方式指定版本:
方法一:使用.nvmrc文件
在项目根目录创建一个.nvmrc文件,里面直接写入你的本地Node版本号:
v14.17.0
方法二:在package.json中添加engines字段
打开项目的package.json,在根节点下添加如下配置(替换成你的本地版本):
"engines": { "node": "14.17.0", "npm": "6.14.13" }
Heroku在构建时会自动读取这个字段,安装指定版本的Node和npm。
3. 重新部署验证
- 把
.nvmrc或修改后的package.json提交到Git:git add . git commit -m "Specify Node.js version for Heroku" git push heroku main - 部署完成后,执行
heroku run node --version确认版本和本地一致,这时候再访问应用应该就不会报错了。
额外排查点
如果还是有问题,可以检查:
- 确认你的代码里没有在老Node版本不支持的其他ES6语法(不过只要版本匹配,
const的问题肯定能解决) - 检查Heroku的buildpack是否为官方的Node.js buildpack,执行
heroku buildpacks查看,不是的话可以设置:heroku buildpacks:set heroku/nodejs
我当初就是靠指定版本解决的这个问题,你试试应该能搞定!
内容的提问来源于stack exchange,提问作者Bwizard
相关产品推荐
相关产品推荐

