【问题标题】:.node is not a valid Win32 application.node 不是有效的 Win32 应用程序
【发布时间】:2021-10-15 19:55:24
【问题描述】:

在 Window 10 Home(x64 位)上,我尝试在命令提示符下运行以下命令:

节点索引.js

错误如下:

C:\Users\cooldudeasateen\OneDrive\Coding\sil\node_modules\bindings\bindings.js:121 扔 e; ^

错误: \?\C:\Users\cooldudeasateen\OneDrive\Coding\sil\node_modules\better-sqlite3\build\Release\better_sqlite3.node 不是有效的Win32应用程序。 \?\C:\Users\humay\OneDrive\Coding\sil\node_modules\better-sqlite3\build\Release\better_sqlite3.node 在 Object.Module._extensions..node (node:internal/modules/cjs/loader:1183:18) 在 Module.load (node:internal/modules/cjs/loader:981:32) 在 Function.Module._load (node:internal/modules/cjs/loader:822:12) 在 Module.require (node:internal/modules/cjs/loader:1005:19) 在需要(节点:内部/模块/cjs/helpers:94:18) 在绑定处 (C:\Users\cooldudeasateen\OneDrive\Coding\sil\node_modules\bindings\bindings.js:112:48) 在对象。 (C:\Users\cooldudeasateen\OneDrive\Coding\sil\node_modules\better-sqlite3\lib\database.js:9:24) 在 Module._compile (node:internal/modules/cjs/loader:1101:14) 在 Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) 在 Module.load (node:internal/modules/cjs/loader:981:32) 在 Function.Module._load (node:internal/modules/cjs/loader:822:12) 在 Module.require (node:internal/modules/cjs/loader:1005:19) 在需要(节点:内部/模块/cjs/helpers:94:18) 在对象。 (C:\Users\cooldudeasateen\OneDrive\Coding\sil\node_modules\better-sqlite3\lib\index.js:2:18) 在 Module._compile (node:internal/modules/cjs/loader:1101:14) 在 Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) { 代码: 'ERR_DLOPEN_FAILED' }

我正在使用以下节点版本:v16.6.2

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    现在我不需要帮助,问题是我安装的是 x86 而不是 x64,这是一个诚实的错误。

    我怎么知道我犯了这个错误? 好吧,老实说,我查看了其他版本的 Nodejs 的其他文件,它以 x64 而不是 x86 结尾。老实说,这是我的错误,我应该在安装新的 Nodejs 版本之前查看它们。

    【讨论】:

      【解决方案2】:

      许多节点模块只是 JavaScript 并且可以跨系统移植。但是,有些包含本机编译代码。您使用的 SQLite 库不是“纯 JavaScript”,而是依赖于二进制文件。

      当您npm install-ed 时,它会为您当时使用的系统安装二进制文件,例如,您在 Mac 上。 better_sqlite3.node 文件用于该特定操作系统。

      然后,您在另一台计算机上打开了此项目,但也复制了 node_modules 目录。就像您无法在 Windows 上运行 .app 文件或(通常)在 Linux 上运行 .exe 一样,此二进制文件与您的操作系统不兼容。删除然后重新安装 SQLite 库将安装与 Windows 兼容的二进制文件。

      由于您的项目位于 OneDrive 文件夹中,因此您可能正在操作系统之间切换。这可能会使这个过程变得乏味。一种解决方法是全局安装 SQLite 模块,但这有一些缺点。

      require() 不仅会查看当前目录,还会递归查看其上方的目录(例如...\OneDrive\Coding\sil,然后是...\OneDrive\Coding,然后是...\OneDrive),然后再检查全局目录。

      【讨论】:

      • 问题是我没有切换操作系统。还有一点是我用nodejs v14更新到v16,加上我用的是同版本的Window 10,同架构同位。
      猜你喜欢
      • 2018-08-11
      • 2013-12-07
      • 2013-11-03
      • 2017-04-16
      • 2012-07-03
      • 2019-03-02
      • 2016-12-07
      • 2011-06-23
      相关资源
      最近更新 更多