在窗口10 Home (在x64位上)上,我尝试在命令提示符上运行以下命令:
节点index.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 at Object.Module._extensions..node (节点:内部/模块/cjs/加载程序:1183:18)在Module.load (节点:内部/模块/cjs/加载程序:981:32),在Function.Module._load (节点:内部/模块/cjs/加载程序:822:12)(节点:Object.Module._extensions..node/模块/cjs/加载程序:1005:19)(节点:内部/模块/cjs/帮助者: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) at Module._compile (节点:内部/模块/cjs/加载程序:1101:14),在Object.Module._extensions..js (节点:内部/模块/cjs/加载程序:1153:10),Module.load (节点:Module._compile/模块/cjs/加载程序:981:32),Function.Module._load (节点:Module._compile/模块/cjs/加载程序:822:12).require (节点:内部/模块/cjs/加载程序:1005:19)(节点:内部/模块/cjs/帮助程序:94:18)。(C:\Users\cooldudeasateen\OneDrive\Coding\sil\node_modules\better-sqlite3\lib\index.js:2:18) at Module._compile (节点:内部/模块/cjs/加载程序:1101:14)在Object.Module._extensions..js (节点:内部/模块/cjs/加载程序:1153:10){代码:'ERR_DLOPEN_FAILED‘}
我正在使用以下Node版本: v16.6.2
发布于 2021-08-14 08:28:11
现在我不需要帮助了,问题是我安装了x86而不是x64,这是一个诚实的错误。
我怎么知道我犯了这个错误?,老实说,我看了其他版本的Nodejs的其他文件,它以x64而不是x86结尾。老实说,这是我的错误,我应该在安装新的Nodejs版本之前查看它们。
发布于 2021-08-12 12:58:48
许多节点模块只是JavaScript,可以跨系统移植。但是,有些包含本机编译的代码。您使用的SQLite库不是“纯JavaScript”,而是依赖于二进制文件。
当您使用npm install-ed时,它为您当时使用的系统安装了二进制文件,例如,您是在Mac上安装的。better_sqlite3.node文件用于特定的操作系统。
然后,您在另一台计算机上打开此项目,但也复制到node_modules目录中。就像您无法在Windows或(通常) Linux上运行.app文件一样,这个二进制文件与您的操作系统不兼容。删除并重新安装SQLite库将安装与Windows兼容的二进制文件.
由于您的项目位于OneDrive文件夹中,所以您可能需要在操作系统之间切换。这可能会使这个过程变得单调乏味。解决办法之一是在全球范围内安装SQLite模块,但这有一些缺点。
在检查全局目录之前,require()不仅要查看当前目录,而且还要递归地查看它上面的目录(例如,...\OneDrive\Coding\sil,然后是...\OneDrive\Coding,然后是...\OneDrive)。
https://stackoverflow.com/questions/68757513
复制相似问题