简体   繁体   English

此 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

I have a simple nodejs application which uses bcrypt as a dependency.我有一个简单的 nodejs 应用程序,它使用 bcrypt 作为依赖项。 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.在我的本地机器上一切正常,但是当我尝试在 aws ec2 免费层上部署此节点应用程序时,我收到此错误。 Looks like there are some server limitations in free tier but bcrypt is a standard library.看起来免费层有一些服务器限制,但 bcrypt 是一个标准库。 There has to be a way to run a simple node app on aws free tier必须有一种方法可以在 aws 免费层上运行一个简单的节点应用程序

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

How can I install bcrypt on ec2 free tier?如何在 ec2 免费层上安装 bcrypt?

I came across this, and my issue was using an older version of node (5.X), when a version >= 10 was required.我遇到了这个问题,我的问题是使用旧版本的节点 (5.X),当需要版本 >= 10 时。

So the solution may be as simple as upgrading node/npm.所以解决方案可能就像升级 node/npm 一样简单。 You can easily do this using nvm , the "Node Version Manager"您可以使用 nvm (“节点版本管理器”)轻松完成此操作

NVM Installation NVM 安装

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

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.正如上面的输出所说,您应该关闭并重新打开终端,或者运行命令将 nvm 脚本的路径添加到当前的 shell 会话中。 You can do whatever is easier for you.你可以做任何对你来说更容易的事情。

After you've installed nvm , you can install and use the specific version of node by simply running this command:安装nvm ,您只需运行以下命令即可安装和使用特定版本的节点:

nvm install <version>

For example:例如:

$ nvm install v10.16.3     // Thanks @Joe for your help :)                                              
$ node --version                                                               
v10.16.3

After upgrading node to version > 10, you can install bcrypt升级node版本>10后,可以安装bcrypt

$ npm install bcrypt

Get this error message, or something similar:获取此错误消息或类似信息:

$ npm install -g sqlite3
npm WARN prefer global node-gyp@3.8.0 should be installed with -g

> sqlite3@5.0.0 install /root/.nvm/node_modules/sqlite3
> 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.
  1. Download latest node: ( I have ubuntu, so the url could be different )下载最新的节点:(我有 ubuntu,所以 url 可能不同)

curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash -

  1. Install it:安装它:

sudo apt-get install -y nodejs

Try again to install sqlite:再次尝试安装 sqlite:

$ npm install -g sqlite3
    
added 120 packages, and audited 120 packages in 6s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM