我在这里遵循了 Heroku 上 Node.js 的基本入门说明:
https://devcenter.heroku.com/categories/nodejs
这些指令没有告诉您创建 .gitignore node_modules,因此暗示应该将文件夹node_modules签入到 Git。当我在 Git 存储库中包含node_modules时,我的入门应用程序运行正常。
当我在以下位置遵循更高级的示例时:
- 使用 Node.js、Ruby、MongoDB 和 Socket.IO 构建实时的多语言应用程序
- https://github.com/mongolab/tractorpush-server (来源)
它指示我将文件夹node_modules添加到文件.gitignore。所以我从 Git 中删除了 node_modules文件夹,将其添加到文件.gitignore中,然后重新部署。这次部署失败,如下所示:
-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.8.2
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
Error: npm doesn't work with node v0.8.2
Required: node@0.4 || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/tmp/node-npm-5iGk/cli.js:2:1)
at Module._compile (module.js:449:26)
Error: npm doesn't work with node v0.8.2
Required: node@0.4 || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/tmp/node-npm-5iGk/cli.js:2:1)
at Module._compile (module.js:449:26)
Dependencies installed
-----> Discovering process types
Procfile declares types -> mongod, redis, web
-----> Compiled slug size is 5.0MB
-----> Launching... done, v9
运行“heroku ps”确认崩溃。好的,没问题,所以我回滚了更改,将文件夹node_module添加回 Git 存储库并将其从文件.gitignore中删除。但是,即使在还原后,我仍然在部署时收到相同的错误消息,但现在应用程序再次正常运行。运行“heroku ps”告诉我应用程序正在运行。
这样做的正确方法是什么?是否包含文件夹node_modules?为什么回滚时仍然会收到错误消息?我的猜测是 Git 存储库在 Heroku 方面的状态不佳。