此 Node 实例的 N-API 版本为 1.此模块支持 N-API 版本 3.此 Node 实例无法运行此模块 [英] The N-API version of this Node instance is 1. This module supports N-API version(s) 3. This Node instance cannot run this module
问题描述
我有一个简单的 nodejs 应用程序,它使用 bcrypt 作为依赖项.在我的本地机器上一切正常,但是当我尝试在 aws ec2 免费层上部署此节点应用程序时,我收到此错误.看起来免费层有一些服务器限制,但 bcrypt 是一个标准库.必须有一种方法可以在 aws 免费层上运行一个简单的节点应用程序
I have a simple nodejs application which uses bcrypt as a dependency. Everything just works fine on my local machine but when I am trying to deploy this node app on aws ec2 free tier I get this error. Looks like there are some server limitations in free tier but bcrypt is a standard library. There has to be a way to run a simple node app on aws free tier
bcrypt@4.0.1 install /home/ubuntu/backend/node_modules/bcrypt
node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp ERR! install error
node-pre-gyp ERR! stack Error: The N-API version of this Node instance is 1. This module supports N-API version(s) 3. This Node instance cannot run this module.
node-pre-gyp ERR! stack at Object.module.exports.validate_package_json (/home/ubuntu/backend/node_modules/node-pre-gyp/lib/util/napi.js:82:9)
node-pre-gyp ERR! stack at validate_config (/home/ubuntu/backend/node_modules/node-pre-gyp/lib/util/versioning.js:229:10)
node-pre-gyp ERR! stack at Object.module.exports.evaluate (/home/ubuntu/backend/node_modules/node-pre-gyp/lib/util/versioning.js:279:5)
node-pre-gyp ERR! stack at install (/home/ubuntu/backend/node_modules/node-pre-gyp/lib/install.js:241:31)
node-pre-gyp ERR! stack at Object.self.commands.(anonymous function) [as install] (/home/ubuntu/backend/node_modules/node-pre-gyp/lib/node-pre-gyp.js:52:37)
node-pre-gyp ERR! stack at run (/home/ubuntu/backend/node_modules/node-pre-gyp/bin/node-pre-gyp:82:30)
node-pre-gyp ERR! stack at Object.<anonymous> (/home/ubuntu/backend/node_modules/node-pre-gyp/bin/node-pre-gyp:134:1)
node-pre-gyp ERR! stack at Module._compile (module.js:652:30)
node-pre-gyp ERR! stack at Object.Module._extensions..js (module.js:663:10)
node-pre-gyp ERR! stack at Module.load (module.js:565:32)
node-pre-gyp ERR! System Linux 4.15.0-1057-aws
node-pre-gyp ERR! command "/usr/bin/node" "/home/ubuntu/backend/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /home/ubuntu/backend/node_modules/bcrypt
node-pre-gyp ERR! node -v v8.10.0
node-pre-gyp ERR! node-pre-gyp -v v0.14.0
node-pre-gyp ERR! not ok
The N-API version of this Node instance is 1. This module supports N-API version(s) 3. This Node instance cannot run this module.
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@2.1.2
npm ERR! Linux 4.15.0-1057-aws
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "i" "bcrypt"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! bcrypt@4.0.1 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypt@4.0.1 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.
npm ERR! Please include the following file with any support request:
npm ERR! /home/ubuntu/backend/npm-debug.log
如何在 ec2 免费层上安装 bcrypt?
How can I install bcrypt on ec2 free tier?
推荐答案
我遇到了这个问题,我的问题是使用旧版本的节点 (5.X),当需要版本 >= 10 时.
I came across this, and my issue was using an older version of node (5.X), when a version >= 10 was required.
>
所以解决方案可能就像升级 node/npm 一样简单.您可以使用 nvm(节点版本管理器")轻松完成此操作.
So the solution may be as simple as upgrading node/npm. You can easily do this using nvm, the "Node Version Manager"
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
Output
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion
正如上面的输出所说,您应该关闭并重新打开终端或运行命令将 nvm 脚本的路径添加到当前 shell 会话.你可以做任何对你来说更容易的事情.
As the output above says, you should either close and reopen the terminal or run the commands to add the path to nvm script to the current shell session. You can do whatever is easier for you.
安装nvm
后,只需运行以下命令即可安装和使用特定版本的node:
After you've installed nvm
, you can install and use the specific version of node by simply running this command:
nvm install <version>
例如:
$ nvm install v10.16.3 // Thanks @Joe for your help :)
$ node --version
v10.16.3
节点升级到版本后>10、可以安装bcrypt
After upgrading node to version > 10, you can install bcrypt
$ npm install bcrypt
这篇关于此 Node 实例的 N-API 版本为 1.此模块支持 N-API 版本 3.此 Node 实例无法运行此模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!