【问题标题】:Heroku Node.js App Crashing | module.js:340 errorHeroku Node.js 应用程序崩溃 | module.js:340 错误
【发布时间】:2014-10-22 12:52:42
【问题描述】:

我的 Heroku 应用程序崩溃了,我相信它甚至还没有进入 Procfile。我遇到了和这里一样的问题:

Cannot execute Node.js app on Heroku successfully (crashes each time)

唯一的区别是我的 package.json 文件包含了 Express

package.json
  {
     "name": "weathersocket",
     "version": "0.0.1",
     "description": "text based weather",
     "main": "weather.js",
     "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "repository": {
         "type": "git",
         "url": "https://github.com/agreen757/weathersocket.github.io"
         },
     "keywords": [
     "demo",
     "heroku",
     "weather"
   ],
   "author": "Adrian Green",
   "license": "MIT",
   "bugs": {
     "url": "https://github.com/agreen757/weathersocket.github.io/issues"
   },
   "homepage": "https://github.com/agreen757/weathersocket.github.io",
   "dependencies": {
     "body-parser": "^1.6.6",
     "consolidate": "^0.10.0",
     "cookie-parser": "^1.3.2",
     "express": "^4.8.6",
     "mongodb": "^1.4.9",
     "socket.io": "^1.0.6",
     "swig": "^1.4.2"
   }
 }

我已尝试在本地使用工头实用程序,一切正常。

我的主 weather.js 文件包含:

server.listen(4000);
console.log("Express server started on 4000");

任何帮助将不胜感激。

更新:Heroku 日志

`2014-08-28T14:29:14.866955+00:00 heroku[web.1]: State changed from crashed to starting
2014-08-28T14:29:18.414238+00:00 app[web.1]: 
2014-08-28T14:29:18.414259+00:00 app[web.1]: > node weather.js
2014-08-28T14:29:18.414257+00:00 app[web.1]: > weathersocket@10.3.1 start /app
2014-08-28T14:29:18.414260+00:00 app[web.1]: 
2014-08-28T14:29:18.755300+00:00 app[web.1]: 
2014-08-28T14:29:18.755380+00:00 app[web.1]: module.js:340
2014-08-28T14:29:18.755637+00:00 app[web.1]:     throw err;
2014-08-28T14:29:18.755646+00:00 app[web.1]:           ^
2014-08-28T14:29:18.757013+00:00 app[web.1]:     at Function.Module._resolveFilename (module.js:338:15)
2014-08-28T14:29:18.757015+00:00 app[web.1]:     at Function.Module._load (module.js:280:25)
2014-08-28T14:29:18.757011+00:00 app[web.1]: Error: Cannot find module 'socket.io'
2014-08-28T14:29:18.757016+00:00 app[web.1]:     at Module.require (module.js:364:17)
2014-08-28T14:29:18.757017+00:00 app[web.1]:     at require (module.js:380:17)
2014-08-28T14:29:18.757019+00:00 app[web.1]:     at Object.<anonymous> (/app/weather.js:6:10)
2014-08-28T14:29:18.757020+00:00 app[web.1]:     at Module._compile (module.js:456:26)
2014-08-28T14:29:18.757022+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:474:10)
2014-08-28T14:29:18.757023+00:00 app[web.1]:     at Module.load (module.js:356:32)
2014-08-28T14:29:18.757025+00:00 app[web.1]:     at Function.Module._load (module.js:312:12)
2014-08-28T14:29:18.757026+00:00 app[web.1]:     at Function.Module.runMain (module.js:497:10)
2014-08-28T14:29:18.765774+00:00 app[web.1]: 
2014-08-28T14:29:18.770873+00:00 app[web.1]: npm ERR! 
2014-08-28T14:29:18.770460+00:00 app[web.1]: npm ERR! weathersocket@10.3.1 start: `node weather.js`
2014-08-28T14:29:18.770720+00:00 app[web.1]: npm ERR! Exit status 8
2014-08-28T14:29:18.770945+00:00 app[web.1]: npm ERR! Failed at the weathersocket@10.3.1 start script.
2014-08-28T14:29:18.771539+00:00 app[web.1]: npm ERR! This is most likely a problem with the weathersocket package,
2014-08-28T14:29:18.771696+00:00 app[web.1]: npm ERR! not with npm itself.
2014-08-28T14:29:18.771844+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2014-08-28T14:29:18.772002+00:00 app[web.1]: npm ERR!     node weather.js
2014-08-28T14:29:18.772821+00:00 app[web.1]: npm ERR! System Linux 3.8.11-ec2
2014-08-28T14:29:18.773778+00:00 app[web.1]: npm ERR! npm -v 1.4.23
2014-08-28T14:29:18.772468+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2014-08-28T14:29:18.773030+00:00 app[web.1]: npm ERR! command "/app/vendor/node/bin/node" "/app/vendor/node/bin/npm" "start"
2014-08-28T14:29:18.773608+00:00 app[web.1]: npm ERR! node -v v0.10.31
2014-08-28T14:29:18.772297+00:00 app[web.1]: npm ERR!     npm owner ls weathersocket
2014-08-28T14:29:18.775689+00:00 app[web.1]: npm ERR! Additional logging details can be found in:
2014-08-28T14:29:18.772151+00:00 app[web.1]: npm ERR! You can get their info via:
2014-08-28T14:29:18.773383+00:00 app[web.1]: npm ERR! cwd /app
2014-08-28T14:29:18.775539+00:00 app[web.1]: npm ERR! 
2014-08-28T14:29:18.773965+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2014-08-28T14:29:18.776097+00:00 app[web.1]: npm ERR! not ok code 0
2014-08-28T14:29:18.775840+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2014-08-28T14:29:19.793237+00:00 heroku[web.1]: State changed from starting to crashed
2014-08-28T14:29:16.891824+00:00 heroku[web.1]: Starting process with command `npm start`
2014-08-28T14:29:19.781258+00:00 heroku[web.1]: Process exited with status 1`

【问题讨论】:

  • 好吧,这可能不是答案,但我在 heroku 上部署的 golang 应用程序也遇到了类似的问题。该应用程序崩溃了,因为我像您一样手动设置了端口。尝试将server.listen(4000) 更改为server.listen(process.env.PORT) 并让heroku 决定使用哪个端口。如果它解决了问题,您可以使用 heroku configs 设置端口:heroku config:set PORT=4000.
  • 您还可以使用一些日志更新您的问题。 heroku logs
  • 我刚刚尝试部署您的应用程序。我使用了来自您的 github 链接的资源,从您的帖子中复制了 package.json 并创建了一个 Procfile web: node weather.js。尽管我遇到了另一个问题并使用[此解决方案]解决了它。(stackoverflow.com/questions/23987571/…)。应用程序现在在 heroku 上运行良好。您是否使用相同的来源?你的 Procfile 里面有什么?
  • 我认为 Function.Module._resolveFilename (module.js:338:15) 的错误是因为找不到模块,因此让我认为您在依赖项中缺少一些节点包,不能是吗?我看到了 socket.io,但表现得好像没有安装

标签: javascript node.js heroku express


【解决方案1】:

我看到一些你可以改进的地方,正如 fakemeta 在他的评论中所说,你应该使用 heroku 变量来监听端口并拥有 IP。

你还应该在你的 package.json 中包含:

"scripts": {
    "start": "node server.js"
  },
  "main": "server.js"

所以系统知道要做什么以及你的快递服务器在哪里

//-------------编辑----------------------------//

你不能尝试在没有 node_modules 文件夹的情况下进行部署吗?一旦你推送 heroku 将安装这些包,我的意思是至少只是为了调试目的

【讨论】:

  • 你问我的快递服务器在哪里?我将这些行添加到我的 package.json 文件中,但仍然有相同的错误消息。这个脚本区域不是由 Procfile 处理的吗?
  • 不,我告诉你你应该告诉系统你的服务器在哪里,据我所知是从你的 package.json 中获取的
  • 我已经更新了 package.json 的那部分,但我仍然遇到同样的问题
  • 我已经删除了 node_modules 文件夹,现在我的错误日志包括 Error: Cannot find module 'socket.io'
  • 那个错误已经存在了,看看你上面问题的第 12 行,我认为这样做可能会在 heroku 端重新安装你的模块
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 2016-08-20
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多