簡體   English   中英

Bcrypt Elastic beanstalk nodejs 部署

[英]Bcrypt Elastic beanstalk nodejs deploy

我正在嘗試將我的 nodejs 后端與 codeship 部署到彈性 beantalk。 但每次我收到以下錯誤:

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.

有誰知道如何修理它? 已經嘗試修復它幾天了,非常感謝幫助!

嘗試使用bcrypt.js模塊而不是bcrypt ,后者是一個更新/最新的 npm 模塊。

運行npm install bcryptjs然后npm install

請參閱此 GitHub 評論: https : //github.com/kelektiv/node.bcrypt.js/issues/509#issuecomment-313693838

TL;DR:作為一種解決方法,在運行npm install bcrypt之前運行npm install npm install bcrypt

首先確保您沒有上傳節點模塊文件夾,並且 npm install 命令正在實例上運行。

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

這個問題與node-pre-gyp有關。 bcrypt 的依賴項。

對於 AWS Elastic Beanstalk 部署到運行 Node 8.x 的 Elastic Beanstalk 時,node-gyp 沒有足夠的權限寫入 tmp 目錄。 bcrypt 不會安裝,應用程序部署將失敗。

解決方法是將 .npmrc 文件添加到項目的根目錄,這將強制 node-gyp 以 root 身份運行並允許安裝完成。 .npmrc 的文件內容:

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

另一種選擇(也許是更正確的方法)是使用代碼制作 .ebextensions 文件:

.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

這將為您提供足夠的權限來運行 node-gyp

我創建了一個.npmrc文件:

unsafe-perm=true

那似乎已經做到了。

package.json添加bcryptjs依賴項,然后npm install應該可以處理所有依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM