NWJS - 动态链接库 (DLL) 初始化例程失败

问题描述

我正在尝试构建一个需要 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 某些节点模块将下载或构建您的操作系统(win32linuxdarwin)独有的文件时,您的架构({{1} },x86) 和您的 Node.js ABI Version (x64,47,72)。如果您全局安装的 Node 版本与 NW.js 内置的版本不同,您的模块将不兼容。

试试这个:

  1. 删除您的 88node_modules
  2. 将您的 Node.js 版本更改为与该版本 NW.js 的内置版本相同
  3. 然后执行package-lock.json,看看它是否有效

这可能不是您的问题,但它可能会解决其他问题并且可以快速测试。

NW.js 中的 Node.js 是什么版本?

如何全局切换 Node.js 版本?

您可能还想查看这个 NW.js wiki 页面: