You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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": {
        "assets": [
          "node_modules/sqlite3/lib/binding/**/*"
        ]
      }
    }
    
    保存后重新执行pkg编译命令。
  • 重新构建适配环境的sqlite3:在本地执行npm rebuild sqlite3 --target=18.5.0 --arch=x64 --platform=win32(对应你的Node.js版本和目标平台),确保生成的绑定文件适配编译环境,之后再打包。
  • 更换项目路径:当前项目路径包含OneDrive和非英文字符,可能导致pkg路径解析异常。将项目迁移到纯英文路径(如C:\projects\XXX)后重新编译。

内容的提问来源于stack exchange,提问作者tecavuzcu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:55:14