首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.node不是有效的Win32应用程序。

.node不是有效的Win32应用程序。
EN

Stack Overflow用户
提问于 2021-08-12 12:27:13
回答 2查看 5.8K关注 0票数 1

在窗口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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-14 08:28:11

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

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

票数 2
EN

Stack Overflow用户

发布于 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)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68757513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档