我正在用Electron 14和node v14.17.7分别[npm 6.14.15]构建一个应用程序来构建我的本地节点模块。
每次我执行npm install
时,我所有的本地依赖都是从源重新构建的(因为电子和节点版本的组合在repo中不能作为预构建的)。
下面是日志中的一个提示:
• electron-builder version=22.14.13
• loaded configuration file=package.json ("build" field)
• rebuilding native dependencies dependencies=drive-name@1.0.3 platform=darwin arch=x64
• install prebuilt binary name=foo version=9.2.4 platform=darwin arch=x64 napi=
• build native dependency from sources name=foo
version=9.2.4
platform=darwin
arch=x64
napi=
reason=prebuild-install failed with error
(run with env DEBUG=electron-builder to get more information)
prebuild-install WARN install prebuilt binaries enforced with --force!
prebuild-install WARN install prebuilt binaries may be out of date!
下面的信息突出:
WARN install prebuilt binaries enforced with --force!
本行打印在这里
if (opts.force) {
log.warn('install', 'prebuilt binaries enforced with --force!')
log.warn('install', 'prebuilt binaries may be out of date!')
不幸的是,我不知道或线索force
设置为真。有人能帮忙吗?
包的build
字段。Json是这样的:
"build": {
"appId": "com.foo.foo",
"productName": "foo",
"buildVersion": "1.0.0",
"publish": {
"provider": "s3",
"bucket": "foo",
"region": "foo",
"endpoint": "https://foo.s3.amazonaws.com"
},
"afterPack": "./scripts/afterPack.js",
"afterSign": "./scripts/notarization.js",
"afterAllArtifactBuild": "./scripts/notarization_dmg.js",
"files": [
"dist/**/*",
"main.js",
],
"extraResources": [
"./extra/**"
],
"dmg": {
"sign": true
},
"mac": {
"binaries": [
"./python34/bin/python3.4",
],
"target": [
"zip",
"dmg"
],
"hardenedRuntime": true,
"entitlements": "./scripts/entitlements.mac.plist",
"icon": "./public/icons/mac/icon.icns"
},
"directories": {
"output": "foo-release",
"buildResources": "public"
}
在运行npm install之前设置DEBUG=electron-builder
以获取更多信息
还可以考虑prebuild-install
中的注释我们建议不要将prebuild与prebuild-install配对预构建与node- gypp -build配对。
使用prebuild,所有预构建的二进制文件都包含在包中它被发布到npm,这意味着不需要单独的下载步骤,就像在预构建中找到的那样。这种做法的讽刺之处在于为每个平台下载所有预构建的二进制文件会更快当它们被捆绑在一起时,它是下载一个单独的预构建二进制文件作为安装脚本。
半斤八两:
- 没有额外的下载步骤,使安装更可靠,更快。
- 支持在本地更改运行时版本,并在Node.js和Electron之间使用相同的安装。重新安装或重建是没有必要,因为所有预构建的二进制文件都在NPM tarball和正确的是在运行时选择。
- node- gypp -build运行时依赖项是无依赖的,并且将继续保持这种状态,因为引入依赖项将会
即使npm安装脚本被禁用,预构建的二进制文件也可以工作。5.npm包校验和也包括预构建的二进制文件。
编辑:
- 在build字段设置
"npmRebuild": "false",
(via) - 设置
opts.force = false
在node_modules/prebuild-install/bin.js:45 npm install --verbose
用于更多输出和npm install --timing
保存调试日志,如果前者给出的信息过多,则用于以后的检查。 创建npm的npm-dbg副本,并在- 切换到预构建
$NODE
和$NPM_CLI_JS
之间添加--inspect-brk
。然后使用Chromium浏览器的devtools/您的IDE在浏览器中使用热键F10和F11逐步完成安装过程。你可以提前设置断点,或者通过debugger;
插入它们,然后用热键F8加速这个过程。