错误:bcrypt_lib.node不是一个有效的Win32应用程序。

13

我有一个在Windows机器上的nodejs项目。当尝试运行该项目时,出现了涉及bcrypt和win32的错误。

[nodemon] 2.0.2 [nodemon] 可以随时输入 rs 来重新启动。 [nodemon] 正在监视目录: . [nodemon] 正在监视扩展名: js,mjs,json [nodemon] 正在启动 node app.js internal/modules/cjs/loader.js:1003 return process.dlopen(module, path.toNamespacedPath(filename)); ^

Error: \\?\C:\Users\owner\desktop\msci444\no-scraps\node_modules\bcrypt\lib\binding\napi-v3\bcrypt_lib.node is not a valid Win32 application.
\\?\C:\Users\owner\desktop\msci444\no-scraps\node_modules\bcrypt\lib\binding\napi-v3\bcrypt_lib.node
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1003:18)
    at Module.load (internal/modules/cjs/loader.js:812:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:849:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (C:\Users\owner\desktop\msci444\no-scraps\node_modules\bcrypt\bcrypt.js:6:16)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
    at Module.load (internal/modules/cjs/loader.js:812:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
[nodemon] app crashed - waiting for file changes before starting...

pt


嗨,根据这个回复 https://github.com/kelektiv/node.bcrypt.js/issues/635#issuecomment-464506366,你需要运行 => npm rebuild bcrypt --build-from-source - Oscar Velandia
请更新问题标题为“bcrypt_lib.node不是一个有效的Win32应用程序”。 - Shahrukh A.
9个回答

28

有不同的解决方法:

  • npm rebuild bcrypt --build-from-source (就像评论中提到的) 检查重新编译的Node版本是否与测试/生产版本匹配
  • npm install node-pre-gyp -g 然后 npm rebuild bcrypt --build-from-source
  • 在部署服务器上删除包含项目文件夹node_modules中的npm-bcrypt文件夹(..programs\server\node_modules),在部署服务器上运行npm install bcrypt

希望能对你有所帮助


1
删除 node_modules 文件夹并重新安装解决了我的问题。 - Kishan Bharda

12

我在Windows环境下遇到了这个错误:之前我在Windows子系统Linux下运行项目,但一旦我需要在Visual Studio Code中进行调试,环境就开始使用Windows版本的Node,结果它无法处理bcrypt库的非Win32二进制文件。

删除node_modules文件夹并重新安装它们npm i解决了这个问题。


最佳答案轻松解决了这个问题。 - eon grey

2

删除或者删除node_modules文件夹,然后重新安装所有的包。


2

当你将文件从一个操作系统移动到另一个操作系统时,会出现此错误。例如,将项目文件从MacOS复制/移动到Windows或Linux。要解决此问题,请删除节点模块文件并执行清理操作 npm install


1

我曾经遇到同样的问题。通过以下方式更改代码,我成功地运行了我的项目:

从://import * as bcrypt from 'bcrypt';

到://import * as bcrypt from 'bcryptjs;

并安装依赖项:npm i bcryptjs --save


1
bcryptjs自2017年以来就没有更新了。我不建议使用它。 - Rhadamez Gindri Hercilio

1

请按照以下步骤操作:

第一步:展开 node_modules 文件夹

第二步:删除 bcrypt

第三步:运行 npm installyarn install

第四步:重启服务器


1
谢谢,我一直在努力运行我的服务器。顺便问一下,你是怎么得到这种解决方案的? - Mahantesh. N. Hadimani.
@Mahantesh.N.Hadimani。我认为包含Python文件的npm包(bcrypt包中有Python文件)需要使用node-gyp或node-pre-gyp进行构建。在我的情况下,我将项目目录链接到了一个(Linux)Docker容器中,并在其中运行它(我认为所有的Node模块和bcrypt都是使用Linux版本的node-gyp/node-pre-gyp构建的)。然后,在本地运行时(不删除节点模块),我遇到了错误。然后,我删除了bcrypt并运行yarn install后,在本地重新启动了服务器。之后,我就没有再遇到这个错误了 :) - Lojith Vinsuka

1
我遇到了同样的问题;我使用WSL子系统安装了bcrypt,使用npm i bcrypt命令,我猜这个命令安装了一个与Windows不兼容的特定架构版本。我在本地机器的终端上运行了nodemon,当我尝试运行我的应用程序时,它一直崩溃。
所以我删除了node_modules文件夹,然后在本地机器的终端上使用npm i命令安装了这些包,一切都顺利进行!

0

请确保将节点路径添加到环境变量中。 对于我在WHM服务器上:

export PATH=$PATH:/opt/cpanel/ea-nodejs10/bin/

0

我遇到了同样的问题;我使用WSL子系统通过 npm i bcrypt 安装了bcrypt,我假设它安装了一个与Windows不兼容的特定架构版本。当我在本地机器的终端中运行nodemon并尝试运行我的应用程序时,它一直崩溃。

所以我删除了 node_modules 文件夹,然后在本地机器的终端上使用 npm i 来安装包,这样就可以顺利运行了!

(我在本地机器上安装nodemon,因为据说mongod不能很好地与WSL一起工作)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接