当我尝试使用git push heroku master
将我的nodejs应用程序推送到heroku时,我得到了这个:
Counting objects: 975, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (862/862), done.
Writing objects: 100% (975/975), 3.74 MiB | 80.00 KiB/s, done.
Total 975 (delta 70), reused 0 (delta 0)
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.10.15
Using npm version: 1.3.3
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
npm ERR! install Couldn't read dependencies
! Push rejected, failed to compile Node.js app
To git@heroku.com:hidden-reaches-9268.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:hidden-reaches-9268.git'
这是我的package.json:
{
"name": "fnBoard",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node server.js"
},
"dependencies": {
"socket.io": "0.9.x"
},
"engines": {
"node": "0.10.x",
"npm": "1.3.x"
}
}
里面有一堆错误,我不知道为什么会这样。请帮忙。 -Thanks
答案 0 :(得分:10)
使这项工作最简单的方法是将node_modules添加到.gitignore。这里有更多信息:Fail to deploy node.js application to heroku
答案 1 :(得分:9)
我正在 ReactJS 工作,我正在尝试在 Heroku 服务器上部署我的项目。那时我发现了同样的错误:
推送被拒绝,无法编译Node.js应用程序。
解决方案是:
如果你使用纱线:
git rm yarn.lock
git push heroku master
如果您使用npm:
git rm package-lock.json
git push heroku master
答案 2 :(得分:4)
添加node_modules可能很简单,但这里不是正确的方法。而是执行git push -f heroku master
以强制推送您的更新,告诉heroku覆盖任何预先存在的node_modules。这样你的git repo就不会陷入节点libs。
答案 3 :(得分:0)
尝试在您的package.json中设置一个heroku-postbuild脚本,并确保包括您的引擎。
"scripts": {
"heroku-postbuild": "npm run build"
},
"engines": {
"npm": "5.6.0",
"node": "8.10.0"
}
我将尝试避免不惜一切代价强行推送任何东西,无论是到github还是heroku。
答案 4 :(得分:0)
我解决了这个问题。
我遇到了同样的错误:
“推送被拒绝,无法编译Node.js应用”
但我的日志抱怨此未知选项:
'--target'
我在 package.json 上解决了这个问题,并在下面找到了以下代码行:
"postinstall": "ng build --aot --target=production"
我删除了--target=production
。
在我的终端上:
我再次提交了$ git commit -m 'anything here'
然后$ git push heroku master
然后我解决了。
答案 5 :(得分:0)
我有同样的问题,问题出在git add上。我忘了添加node_modules文件。我关闭了终端,并再次运行了Heroku和NodeJs入门[1]中给出的命令集。该应用程序已成功推入堆栈。
答案 6 :(得分:0)
问题 当您使用Yarn安装节点模块时,它将生成一个yarn.lock文件,其中包含运行命令时已安装的确切模块的列表。如果package.json中的依赖关系发生了变化,但是Yarn可执行文件未生成新的yarn.lock文件,我们将使构建失败,以防止可能会在运行时影响应用程序的细微错误和安全问题。
分辨率 当您的应用程序使用Yarn但其他工具修改了package.json文件而不调用yarn安装时,通常会发生此问题。例如,使用npm而不是Yarn安装新模块,或手动手动更新版本要求。
要解决此问题,请运行yarn install并签入更新的yarn.lock文件。
确保您已删除package.lock文件并在推送之前提交了相同的文件。
答案 7 :(得分:0)
我通过join
将其修复为不属于Node的导入模块的路径。更多信息在这里
https://stackoverflow.com/a/64772154/12982656