Bcrypt 文件太短

问题描述

我正面临一个错误,导致我的 nodejs 应用程序崩溃。错误如下: '

Error: /home/*******/nodevenv/******/12/lib/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: file too short
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1057:18)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/home/outdoor1/nodevenv/prescription_server/12/lib/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
internal/modules/cjs/loader.js:1057
return process.dlopen(module,path.toNamespacedpath(filename));

该应用程序托管在基于 CPanel 的共享主机上。该应用程序运行 6 个月没有错误。但是有 2 天该应用程序没有运行。我重新安装了 bcrypt。但什么都没有改变。该应用程序在我的本地电脑上运行良好。

解决方法

看起来你的 bcrypt 二进制文件不知何故损坏了。

您尝试重新安装 bcrypt 的结果是什么?哪里有错误?

位于 https://github.com/kelektiv/node.bcrypt.js 的 bcrypt 存储库指出,它仅适用于大于 >= 10.0.0 的“稳定”版本的 NodeJS,更重要的是,安装时需要在主机平台上重新编译。如果您的主机没有安装完整的构建环境,您将无法在本地编译此模块。

假设您运行的是正确版本的 NodeJS,您可以尝试将 repo 直接检索到您的主机,cd 到其目录,然后运行 ​​npm install 以安装其要求。其中最主要的是 node-pre-gyp,它可以帮助简化本地节点模块的编译。

完成此操作后,您应该能够为 bcrypt 本身运行安装命令,如 repo 的 package.json 文件中所述:node-pre-gyp install --fallback-to-build。 (请注意,根据主机的配置方式,您可能需要在该命令的开头添加 npx 以正确调用 node-pre-gyp,例如 npx node-pre-gyp install --fallback-to-build

注意这引发的任何错误,并在此处分享它们作为您问题的更新。我猜是在编译过程中安装失败,您错过了所涉及的错误消息。

除此之外,我还会询问 CPanel 支持人员,因为我确信这不是一个独特的问题。