使用PKG编译的EXE运行报错:找不到sqlite3模块
PKG编译EXE后运行报错:找不到sqlite3模块文件
我用PKG工具将JavaScript文件编译为EXE可执行程序,但在另一台电脑运行时出现报错,提示无法找到指定路径下的sqlite3模块文件,所有相关版本均已更新,具体报错信息如下:
错误: 找不到模块 'C:\snapshot\highu\OneDrive\Masaüstü\XXX\node_modules\sqlite3\lib\binding\napi-v6-win32-unknown-x64\node_sqlite3.node' 调用栈: - C:\snapshot\highu\OneDrive\Masaüstü\XXX\node_modules\sqlite3\lib\sqlite3-binding.js - C:\snapshot\highu\OneDrive\Masaüstü\XXX\node_modules\sqlite3\lib\sqlite3.js - C:\snapshot\highu\OneDrive\Masaüstü\XXX\.\.\.\.\.js 1) 如果你想将包/文件编译成可执行程序,请留意编译警告并在'require'调用中指定字面量。2) 如果你不想将包/文件编译成可执行程序,而是想从文件系统中'require'它(可能是插件),请使用process.cwd()或process.execPath在'require'调用中指定绝对路径。 在 Module._resolveFilename (node:internal/modules/cjs/loader:946:15) 在 Function._resolveFilename (pkg/prelude/bootstrap.js:1955:46) 在 Module._load (node:internal/modules/cjs/loader:787:27) 在 Module.require (node:internal/modules/cjs/loader:1012:19) 在 Module.require (pkg/prelude/bootstrap.js:1855:31) 在 require (node:internal/modules/cjs/helpers:102:18) 在 Object.<anonymous> (C:\snapshot\highu\OneDrive\Masaüstü\XXX\node_modules\sqlite3\lib\sqlite3-binding.js:4:17) 在 Module._compile (pkg/prelude/bootstrap.js:1930:22) 在 Module._extensions..js (node:internal/modules/cjs/loader:1166:10) 在 Module.load (node:internal/modules/cjs/loader:988:32) { code: 'MODULE_NOT_FOUND', requireStack: [ 'C:\\snapshot\\highu\\OneDrive\\Masaüstü\\XXX\\node_modules\\sqlite3\\lib\\sqlite3-binding.js', 'C:\\snapshot\\highu\\OneDrive\\Masaüstü\\XXX\\node_modules\\sqlite3\\lib\\sqlite3.js', 'C:\\snapshot\\highu\\OneDrive\\Masaüstü\\XXX\\.\\.\\.\\.\\.js' ], pkg: true } Node.js v18.5.0
解决方法
- 修正sqlite3绑定文件的引用路径:打开
node_modules/sqlite3/lib/sqlite3-binding.js,引入path模块后,将原相对路径的require改为动态路径,比如require(path.join(__dirname, 'binding/napi-v6-win32-unknown-x64/node_sqlite3.node')),确保路径解析正确。 - 配置pkg打包资源:在项目的package.json中添加pkg配置,明确指定要打包的sqlite3绑定文件:
保存后重新执行pkg编译命令。{ "pkg": { "assets": [ "node_modules/sqlite3/lib/binding/**/*" ] } } - 重新构建适配环境的sqlite3:在本地执行
npm rebuild sqlite3 --target=18.5.0 --arch=x64 --platform=win32(对应你的Node.js版本和目标平台),确保生成的绑定文件适配编译环境,之后再打包。 - 更换项目路径:当前项目路径包含OneDrive和非英文字符,可能导致pkg路径解析异常。将项目迁移到纯英文路径(如
C:\projects\XXX)后重新编译。
内容的提问来源于stack exchange,提问作者tecavuzcu
相关产品推荐
相关产品推荐

