前言
在手机上运行node项目(code-server),在proot容器下运行的,本来用得好好的,在某次开机后,再次启动项目就出现了标题的报错,完整报错如下:
root@localhost:/www/wwwroot# ./code-server/bin/code-server
node:internal/modules/cjs/loader:1338
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: /www/wwwroot/code-server/node_modules/argon2/lib/binding/napi-v3/argon2.node: cannot open shared object file: No such file or directory
at Module._extensions..node (node:internal/modules/cjs/loader:1338:18)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Module.require (node:internal/modules/cjs/loader:1141:19)
at require (node:internal/modules/cjs/helpers:110:18)
at Object.<anonymous> (/www/wwwroot/code-server/node_modules/argon2/argon2.js:9:25)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12) {
code: 'ERR_DLOPEN_FAILED'
}
Node.js v18.15.0
解决
仅需在终端执行下面3条命令即可
- 这条命令使用 npm 包管理器安装名为 "argon2" 的模块。--ignore-script 选项告诉 npm 跳过运行 npm 脚本,即跳过模块的构建过程,并直接安装已构建的模块。
npm install argon2 --ignore-script
- 这条命令使用 npm 包管理器全局安装名为 "node-pre-gyp" 的模块。这个模块用于编译 Node.js 模块,并管理预构建的二进制文件。
npm install -g node-pre-gyp
- 这条命令使用 node-pre-gyp 编译 argon2 模块,并在指定的路径下寻找编译结果。-C 选项指定编译结果的路径。该命令用于重新编译 argon2 模块,通常用于更新后重建模块。
node-pre-gyp rebuild -C ./node_modules/argon2