Bcrypt Elastic beanstalk nodejs deploy

痴心易碎 提交于 2021-01-27 02:14:05

问题


I'm trying to deploy my nodejs backend with codeship to elastic beanstalk. But everytime I get the following error:

bcrypt@1.0.3 install /tmp/deployment/application/node_modules/bcrypt
node-pre-gyp install --fallback-to-build

module.js:471
throw err;
^

Error: Cannot find module '../'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/tmp/deployment/application/node_modules/.bin/node-pre-gyp:15:20)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)

npm ERR! Linux 4.9.62-21.56.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v6.11.5-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v6.11.5-linux-x64/bin/npm" "--production" "rebuild"
npm ERR! node v6.11.5
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! bcrypt@1.0.3 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the bcrypt@1.0.3 install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the bcrypt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-pre-gyp install --fallback-to-build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs bcrypt
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls bcrypt
npm ERR! There is likely additional logging output above.

Does anyone know how to fix it? been trying to fix it for couple days now, help is much appreciated!


回答1:


Try to use bcrypt.js module instead of bcrypt which is an update/latest npm module.

Run npm install bcryptjs and then npm install




回答2:


See this GitHub comment: https://github.com/kelektiv/node.bcrypt.js/issues/509#issuecomment-313693838

TL;DR: as a workaround run npm install bcrypt before running npm install




回答3:


First make sure you are not uploading the node modules folder and that the npm install command is working on the instance.

https://github.com/kelektiv/node.bcrypt.js/wiki/Installation-Instructions

This problem is related to node-pre-gyp. A dependency of bcrypt.

For AWS Elastic Beanstalk When deploying to Elastic Beanstalk running Node 8.x, node-gyp doesn't have sufficient permissions to write to the tmp directory. bcrypt won't install and the application deployment will fail.

A workaround is to add a .npmrc file to the root of your project that will force node-gyp to run as root and allow the installation to complete. File contents for .npmrc:

# Force npm to run node-gyp also as root, preventing permission denied errors in AWS with npm@5 or @6
unsafe-perm=true

Another alternative (Perhaps the more right way) is to make .ebextensions file with code:

.ebextensions:00_change_npm_permissions.config:

  "/opt/elasticbeanstalk/hooks/appdeploy/post/00_set_tmp_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      chown -R nodejs:nodejs /tmp/.npm

This will give you sufficient access to run node-gyp




回答4:


I created a .npmrc file with:

unsafe-perm=true

That seemed to have done it.




回答5:


Add bcryptjs dependency in your package.json and then npm install should work with all the dependencies.



来源:https://stackoverflow.com/questions/47972468/bcrypt-elastic-beanstalk-nodejs-deploy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!