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

Electron+SQLite3签名错误:映射进程与文件Team ID不一致求助

Electron + sqlite3 签名错误解决方案

问题重现

使用VS Code构建Electron应用时遭遇sqlite3签名错误,报错信息:

(code signature in '/private/var/folders/rb/p1qyx7yn6tb043v2hk3wcgyh0000gp/T/.com.electron.artfolio.gDBTGz' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs)

报错栈指向:

at Object. (/Applications/artfolio.app/Contents/Resources/app.asar/node_modules/sqlite3/lib/sqlite3-binding.js:1:37)

当前配置信息:

entitlements.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
    <!-- <key>com.apple.security.app-sandbox</key>
    <true/> -->
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.debugger</key>
    <true/>
    <key>com.apple.security.files.downloads.read-write</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <true/>
    <key>com.apple.security.print</key>
    <true/>
    <key>com.apple.security.system.privileged</key>
    <true/>
</dict>
</plist>

package.json 构建脚本

"build": "next build",
"rebuild": "rimraf node_modules/sqlite3/build && electron-rebuild sqlite3",
"make": "electron-forge make --platform darwin  --arch arm64",

执行命令顺序:

npm run build
npm run rebuild
npm run make

解决方案

1. 精准编译sqlite3匹配Electron环境

执行electron-rebuild时明确指定版本和平台,避免生成不兼容的二进制文件:

npx electron-rebuild -f -w sqlite3 --version <你的Electron版本> --platform darwin --arch arm64

替换<你的Electron版本>为项目实际版本(可通过npm list electron查看)。

2. 在Electron Forge中配置签名权限

在package.json的config.forge中明确绑定 entitlements 文件,确保权限应用到所有进程:

"config": {
  "forge": {
    "packagerConfig": {
      "osxSign": {
        "entitlements": "./entitlements.plist",
        "entitlementsInherit": "./entitlements.plist",
        "hardenedRuntime": true,
        "gatekeeperAssess": false,
        "identity": "<你的开发者ID>"
      }
    }
  }
}

替换<你的开发者ID>为你的Apple开发者证书名称(可通过security find-identity -v -p codesigning查看)。

3. 手动签名sqlite3二进制文件

如果自动签名未覆盖sqlite3的.node文件,手动执行签名:

codesign --force --sign "<你的开发者ID>" --entitlements ./entitlements.plist ./node_modules/sqlite3/build/Release/sqlite3.node

完成后重新执行打包流程。

4. 清理缓存后重新构建

清理旧构建残留,避免签名缓存干扰:

rimraf node_modules/sqlite3/build
rimraf out/
npm run rebuild
npm run make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:32:47