【问题标题】:Problems Deploying Node.js MEAN App to Heroku将 Node.js MEAN 应用程序部署到 Heroku 的问题
【发布时间】:2016-12-05 23:10:50
【问题描述】:

我的应用在本地运行,结构如下:

MyApp
  >package.json
  >npm-debug.log
  >readme.md
  >client
    >app
    >node_modules
    >public
    >views
    >bower.json
    >Gruntfile.js
    >package.json
  >server
    >config
    >models
    >node_modules
    >routes
    >app.js
    >package.json

部署到 heroku 会导致应用程序错误。日志似乎表明 bcrypt 依赖和一些 Mongoose 模块存在问题。我是否需要使用 MongoLabs 之类的东西才能让我的应用在 Heroku 上运行?另外,我对 package.json 有一些困惑,我不确定我是否正确实施了它。我的根目录、客户端目录和服务器目录中有一个 package.json。

根目录下的package.json:

{
  "name": "****",
  "version": "1.0.0",
  "description": "****",
  "engines": {
    "node": "4.4.7"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "cd server && node app.js"
  },
  "author": "*****",
  "license": "ISC"
}

/server 中的 package.json:

{
  "name": "*****",
  "version": "1.0.0",
  "description": "******",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "******",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^0.8.5",
    "body-parser": "^1.13.2",
    "connect-flash": "^0.1.1",
    "cookie-parser": "^1.3.5",
    "ejs": "^2.3.3",
    "express": "^4.13.1",
    "express-session": "^1.11.3",
    "mongoose": "^4.1.0",
    "mongoskin": "^1.3.20",
    "morgan": "^1.6.1",
    "passport": "^0.2.2",
    "passport-local": "^1.0.0"
  }
}

还有,/client 中的 package.json:

{
  "name": "****",
  "version": "1.0.0",
  "description": "******",
  "main": "Gruntfile.js",
  "directories": {
    "test": "tests"
  },
  "dependencies": {
    "grunt": "^0.4.5"
  },
  "devDependencies": {
    "grunt-contrib-concat": "^0.5.1",
    "grunt-contrib-watch": "^0.6.1"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  }
}

heroku 日志:

2016-07-31T23:12:37.522131+00:00 app[web.1]:         ^
2016-07-31T23:12:37.522130+00:00 app[web.1]:         throw e
2016-07-31T23:12:37.522133+00:00 app[web.1]: Error: /app/server/node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header
2016-07-31T23:12:37.522132+00:00 app[web.1]: 
2016-07-31T23:12:37.522134+00:00 app[web.1]:     at Error (native)
2016-07-31T23:12:37.522136+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-07-31T23:12:37.522135+00:00 app[web.1]:     at Object.Module._extensions..node (module.js:434:18)
2016-07-31T23:12:37.522136+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-07-31T23:12:37.522137+00:00 app[web.1]:     at Module.require (module.js:353:17)
2016-07-31T23:12:37.522138+00:00 app[web.1]:     at require (internal/module.js:12:17)
2016-07-31T23:12:37.522139+00:00 app[web.1]:     at Object.<anonymous> (/app/server/node_modules/bcrypt/bcrypt.js:3:35)
2016-07-31T23:12:37.522139+00:00 app[web.1]:     at bindings (/app/server/node_modules/bcrypt/node_modules/bindings/bindings.js:76:44)
2016-07-31T23:12:37.522140+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-07-31T23:12:37.522140+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:416:10)
2016-07-31T23:12:37.522141+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-07-31T23:12:37.522142+00:00 app[web.1]:     at Module.require (module.js:353:17)
2016-07-31T23:12:37.522142+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-07-31T23:12:37.522143+00:00 app[web.1]:     at Object.<anonymous> (/app/server/models/user.js:3:23)
2016-07-31T23:12:37.522143+00:00 app[web.1]:     at require (internal/module.js:12:17)
2016-07-31T23:12:37.522144+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-07-31T23:12:37.529768+00:00 app[web.1]: 
2016-07-31T23:12:37.535942+00:00 app[web.1]: npm ERR! Linux 3.13.0-91-generic
2016-07-31T23:12:37.536334+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-07-31T23:12:37.536549+00:00 app[web.1]: npm ERR! node v4.4.7
2016-07-31T23:12:37.536950+00:00 app[web.1]: npm ERR! npm  v2.15.8
2016-07-31T23:12:37.537269+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2016-07-31T23:12:37.537447+00:00 app[web.1]: npm ERR! ****@1.0.0 start: `cd server && npm install && node app.js`
2016-07-31T23:12:37.537605+00:00 app[web.1]: npm ERR! Exit status 1
2016-07-31T23:12:37.537772+00:00 app[web.1]: npm ERR! 
2016-07-31T23:12:37.537933+00:00 app[web.1]: npm ERR! Failed at the ****@1.0.0 start script 'cd server && npm install && node app.js'.
2016-07-31T23:12:37.538132+00:00 app[web.1]: npm ERR! This is most likely a problem with the **** package,
2016-07-31T23:12:37.538291+00:00 app[web.1]: npm ERR! not with npm itself.
2016-07-31T23:12:37.538445+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2016-07-31T23:12:37.538601+00:00 app[web.1]: npm ERR!     cd server && npm install && node app.js
2016-07-31T23:12:37.538768+00:00 app[web.1]: npm ERR! You can get information on how to open an issue for this project with:
2016-07-31T23:12:37.538926+00:00 app[web.1]: npm ERR!     npm bugs ****
2016-07-31T23:12:37.539078+00:00 app[web.1]: npm ERR! Or if that isn't available, you can get their info via:
2016-07-31T23:12:37.539248+00:00 app[web.1]: npm ERR! 
2016-07-31T23:12:37.539399+00:00 app[web.1]: npm ERR!     npm owner ls ****
2016-07-31T23:12:37.539536+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2016-07-31T23:12:37.542846+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-07-31T23:12:37.542943+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2016-07-31T23:12:37.542671+00:00 app[web.1]: 
2016-07-31T23:12:37.613094+00:00 heroku[web.1]: Process exited with status 1
2016-07-31T23:12:37.624890+00:00 heroku[web.1]: State changed from starting to crashed
2016-07-31T23:13:53.875013+00:00 heroku[api]: Deploy 3be7c63 by ****@gmail.com
2016-07-31T23:13:53.875094+00:00 heroku[api]: Release v20 created by ****@gmail.com
2016-07-31T23:13:54.082054+00:00 heroku[slug-compiler]: Slug compilation started
2016-07-31T23:13:54.082063+00:00 heroku[slug-compiler]: Slug compilation finished
2016-07-31T23:13:54.206719+00:00 heroku[web.1]: State changed from crashed to starting
2016-07-31T23:13:55.623943+00:00 heroku[web.1]: Starting process with command `npm start`
2016-07-31T23:13:57.804242+00:00 app[web.1]: 
2016-07-31T23:13:57.804261+00:00 app[web.1]: > ****@1.0.0 start /app
2016-07-31T23:13:57.804262+00:00 app[web.1]: > cd server && node app.js
2016-07-31T23:13:57.804263+00:00 app[web.1]: 
2016-07-31T23:13:58.379535+00:00 app[web.1]:         throw e
2016-07-31T23:13:58.379536+00:00 app[web.1]:         ^
2016-07-31T23:13:58.379520+00:00 app[web.1]: /app/server/node_modules/bcrypt/node_modules/bindings/bindings.js:83
2016-07-31T23:13:58.379542+00:00 app[web.1]: Error: /app/server/node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header
2016-07-31T23:13:58.379544+00:00 app[web.1]:     at Object.Module._extensions..node (module.js:434:18)
2016-07-31T23:13:58.379545+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-07-31T23:13:58.379537+00:00 app[web.1]: 
2016-07-31T23:13:58.379543+00:00 app[web.1]:     at Error (native)
2016-07-31T23:13:58.379547+00:00 app[web.1]:     at bindings (/app/server/node_modules/bcrypt/node_modules/bindings/bindings.js:76:44)
2016-07-31T23:13:58.379545+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-07-31T23:13:58.379548+00:00 app[web.1]:     at Object.<anonymous> (/app/server/node_modules/bcrypt/bcrypt.js:3:35)
2016-07-31T23:13:58.379546+00:00 app[web.1]:     at Module.require (module.js:353:17)
2016-07-31T23:13:58.379546+00:00 app[web.1]:     at require (internal/module.js:12:17)
2016-07-31T23:13:58.379549+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:416:10)
2016-07-31T23:13:58.379548+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-07-31T23:13:58.379550+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-07-31T23:13:58.379549+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-07-31T23:13:58.379551+00:00 app[web.1]:     at Module.require (module.js:353:17)
2016-07-31T23:13:58.379551+00:00 app[web.1]:     at require (internal/module.js:12:17)
2016-07-31T23:13:58.387711+00:00 app[web.1]: 
2016-07-31T23:13:58.393911+00:00 app[web.1]: npm ERR! Linux 3.13.0-91-generic
2016-07-31T23:13:58.394517+00:00 app[web.1]: npm ERR! node v4.4.7
2016-07-31T23:13:58.379552+00:00 app[web.1]:     at Object.<anonymous> (/app/server/models/user.js:3:23)
2016-07-31T23:13:58.379552+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-07-31T23:13:58.394260+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-07-31T23:13:58.395240+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2016-07-31T23:13:58.395014+00:00 app[web.1]: npm ERR! npm  v2.15.8
2016-07-31T23:13:58.395422+00:00 app[web.1]: npm ERR! ****@1.0.0 start: `cd server && node app.js`
2016-07-31T23:13:58.396100+00:00 app[web.1]: npm ERR! This is most likely a problem with the **** package,
2016-07-31T23:13:58.396258+00:00 app[web.1]: npm ERR! not with npm itself.
2016-07-31T23:13:58.396614+00:00 app[web.1]: npm ERR!     cd server && node app.js
2016-07-31T23:13:58.395590+00:00 app[web.1]: npm ERR! Exit status 1
2016-07-31T23:13:58.395926+00:00 app[web.1]: npm ERR! Failed at the ****@1.0.0 start script 'cd server && node app.js'.
2016-07-31T23:13:58.395759+00:00 app[web.1]: npm ERR! 
2016-07-31T23:13:58.396416+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2016-07-31T23:13:58.396937+00:00 app[web.1]: npm ERR!     npm bugs ****
2016-07-31T23:13:58.396770+00:00 app[web.1]: npm ERR! You can get information on how to open an issue for this project with:
2016-07-31T23:13:58.397098+00:00 app[web.1]: npm ERR! Or if that isn't available, you can get their info via:
2016-07-31T23:13:58.400797+00:00 app[web.1]: 
2016-07-31T23:13:58.401032+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-07-31T23:13:58.397260+00:00 app[web.1]: npm ERR! 
2016-07-31T23:13:58.397418+00:00 app[web.1]: npm ERR!     npm owner ls ****
2016-07-31T23:13:58.397584+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2016-07-31T23:13:58.401189+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2016-07-31T23:13:58.456892+00:00 heroku[web.1]: Process exited with status 1
2016-07-31T23:13:58.447070+00:00 heroku[web.1]: State changed from starting to crashed

【问题讨论】:

    标签: node.js deployment mongoose mean-stack heroku-toolbelt


    【解决方案1】:

    解决了。原来是 bcrypt 依赖的问题。通过 .gitignore'ing 我的 node_modules 并在 heroku 服务器端安装依赖项,现在一切正常。

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2014-01-07
      • 2017-12-05
      • 2011-10-03
      • 1970-01-01
      相关资源
      最近更新 更多