问题描述
我正在尝试构建一个需要 sqlite3 模块的应用程序。
当我从 cmd node server.js
运行它时,我的应用程序运行良好
但是当我从 NWJS 运行它时崩溃并抛出下面的错误
Uncaught Error: A dynamic link library (DLL) initialization routine Failed.
\\?\C:\Users\Coder Bilall\Desktop\My Work\NWJS\GMoney\Gmoney\node_modules\sqlite3\lib\binding\napi-v3-win32-x64\node_sqlite3.node
at Object.Module._extensions..node (node:internal/modules/cjs/loader:1206:18)
at Module.load (node:internal/modules/cjs/loader:991:32)
at Function.Module._load (node:internal/modules/cjs/loader:831:14)
at Module.require (node:internal/modules/cjs/loader:1015:19)
at require (node:internal/modules/cjs/helpers:92:18)
at Object.<anonymous> (C:\Users\Coder Bilall\Desktop\My Work\NWJS\GMoney\Gmoney\node_modules\sqlite3\lib\sqlite3-binding.js:4:15)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1161:10)
at Module.load (node:internal/modules/cjs/loader:991:32)
at Function.Module._load (node:internal/modules/cjs/loader:831:14)
我的server.js代码
const express = require('express')
const sqlite3 = require('sqlite3').verbose();
const LocalStorage = require('node-localstorage').LocalStorage;
let exec = require('child_process').exec,child;
const connectionTester = require('connection-tester');
const notifier = require('node-notifier');
const path = require('path');
const fs = require('fs');
const os = require('os');
const readline = require('readline');
const {google} = require('googleapis');
const ToCsv = require("sqlite-to-csv");
var cookieParser = require('cookie-parser')
const mailjet = require ('node-mailjet')
.connect('878dcf9b5a0ae7cf07498b6ab3d73ca7','c6c90ff0878e2b9640a6c342f84e142e')
const db = new sqlite3.Database('mydb.db');
const application = express();
application.use(cookieParser());
const port = 2020;
application.get('/',(req,res) => {
res.send('Hello World');
});
application.listen(port,() => {
console.log(`Example application listening at http://localhost:${port}`)
})
请帮帮我????
解决方法
失败的代码引用了节点绑定 sqlite3\lib\binding\napi-v3-win32-x64
。
当您 npm install
某些节点模块将下载或构建您的操作系统(win32
、linux
、darwin
)独有的文件时,您的架构({{1} },x86
) 和您的 Node.js ABI Version (x64
,47
,72
)。如果您全局安装的 Node 版本与 NW.js 内置的版本不同,您的模块将不兼容。
试试这个:
- 删除您的
88
和node_modules
- 将您的 Node.js 版本更改为与该版本 NW.js 的内置版本相同
- 然后执行
package-lock.json
,看看它是否有效
这可能不是您的问题,但它可能会解决其他问题并且可以快速测试。
NW.js 中的 Node.js 是什么版本?
如何全局切换 Node.js 版本?
- 完全卸载 Node.js。
- 安装节点版本管理器 (nvm):
- Linux/OSX:https://github.com/nvm-sh/nvm
- Windows: https://github.com/coreybutler/nvm-windows
- Windows 替代方案: https://github.com/marcelklehr/nodist
- 查阅您安装的
npm install
版本的文档。使用它来安装并切换到正确的 Node.js 版本
您可能还想查看这个 NW.js wiki 页面: