node.js - 错误: Electron packaging with electron-packager

标签 node.js npm electron electron-packager

我正在尝试使用 Electron 打包器打包我的 ember-electron 应用程序。

这适用于运行 Ember-Electron 的 Windows Electron 应用程序,ember-cli:3.11.0, Node :10.16.0。过去,它运行良好,但删除“electron-out”、“dist”和“release-builds”文件夹后,我收到错误。

{
    "name": "messenger",
    "productName": "Messenger",
    "version": "0.0.77",
    "main": "./ember-electron/main.js",
    "private": true,
    "scripts": {
        "build": "ember build",
        "package-win": "electron-packager . --project-path=electron-out/project --overwrite --platform=win32 --arch=x64 --icon=assets/messenger.ico --no-prune ---app-version=\"1.0.0.77\" --executable-name=\"Messenger\" --out=release-builds",

        "lint:hbs": "ember-template-lint .",
        "lint:js": "eslint .",
        "start": "ember serve",
        "test": "ember test"
    },
    "devDependencies": {
    "electron": "^5.0.8",
    "electron-builder": "^20.40.2",
    "electron-forge": "^5.2.4",
    "electron-packager": "^14.0.2",
    "electron-prebuilt-compile": "3.0.2",
    "electron-winstaller": "^2.7.0",
    ....
}

这是我得到的错误日志:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Users\\userName\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'package-win' ]
2 info using npm@6.10.1
3 info using node@v10.16.0
4 verbose run-script [ 'prepackage-win', 'package-win', 'postpackage-win']
5 info lifecycle messenger@0.0.77~prepackage-win: messenger@0.0.77
6 info lifecycle messenger@0.0.77~package-win: messenger@0.0.77
7 verbose lifecycle messenger@0.0.77~package-win: unsafe-perm in lifecycle true
8 verbose lifecycle messenger@0.0.77~package-win: PATH:C:\Users\userName\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\messenger\New\client\node_modules\.bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\dotnet\;C:\Program Files (x86)\Microsoft Emulator Manager\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Python27;C:\Python27\Scripts;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\OpenSSL-Win64\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\PHP\;C:\Apache24\bin;C:\Program Files\PuTTY\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\cygwin64\bin;C:\Python27\Scripts\;C:\Python27\;C:\Users\userName\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Bandizip\;C:\Program Files\Sublime Text 3;C:\Users\userName\AppData\Local\Yarn\bin;C:\Program Files (x86)\Yarn;C:\Program Files\OpenSSL-Win64\bin;C:\PHP\;C:\Apache24\bin;C:\Users\userName\AppData\Roaming\npm;C:\cygwin64\bin;
9 verbose lifecycle messenger@0.0.77~package-win: CWD: C:\messenger\New\client
10 silly lifecycle messenger@0.0.77~package-win: Args: [ '/d /s /c', 'electron-packager . ' ]
11 silly lifecycle messenger@0.0.77~package-win: Returned: code: 1  signal: null
12 info lifecycle messenger@0.0.77~package-win: Failed to exec package-win script
13 verbose stack Error: messenger@0.0.77 package-win: `electron-packager . --project-path=electron-out/project --overwrite --platform=win32 --arch=x64 --icon=assets/messenger.ico --no-prune ---app-version=\"1.0.0.77\" --executable-name=\"Messenger\" --out=release-builds",`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous (C:\Users\userName\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\index.js:301:16)
13 verbose stack     at EventEmitter.emit (events.js:198:13)
13 verbose stack     at ChildProcess.<anonymous> (C:\Users\userName\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:198:13)
13 verbose stack     at maybeClose (internal/child_process.js:982:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid messenger@0.0.77
15 verbose cwd C:\messenger\New\client
16 verbose Windows_NT 10.0.17763
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\userName\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "run" "package-win"
18 verbose node v10.16.0
19 verbose npm  v6.10.1
20 error code ELIFECYCLE
21 error errno 1
22 error messenger@0.0.77 package-win: `electron-packager . --project-path=electron-out/project --overwrite --platform=win32 --arch=x64 --icon=assets/messenger.ico --no-prune ---app-version=\"1.0.0.77\" --executable-name=\"Messenger\" --out=release-builds",`
22 error Exit status 1
23 error Failed at the messenger@0.0.77 package-win script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

最佳答案

我建议您使用 Electron 构建器代替。我写了一个Medium article详细记录了这一点,您可以找到我的 complete project在 GitHub 上。

除此之外,这里还有一个快速概述。首先添加electron-builder :

npm install electron-builder --save-dev

要使 Electron-builder 正常工作,您需要指示构建中必须包含哪些文件。您可以通过 package.json 中的构建 key 来完成此操作。假设您在名为 app/ 的文件夹中编译文件。然后,您只需添加在 node_modules 文件夹中找到的依赖项(请记住,独立应用程序必须包含所有内容)。因此,在您的 package.json 中添加一个“build”键:

"build": {
  "appId": "com.electron.build.example",
  "files": [
    "app/**/*",
    "node_modules/**/*",
    "package.json"
  ],
  "publish": null
}

添加调用(发布)构建的脚本:

"scripts": {
  "postinstall": "install-app-deps",
  "start": "gulp start",
  "release": "gulp release"
},

我用了gulp ,但你可以使用任何你想要的东西(甚至直接从 npm 调用 electro-builder)。由你决定。就我而言,我只需要将该任务包含在我的 gulp 文件中。请注意,我使用了 exec 而不是 spawn,以便在 Windows 计算机上进行交叉编译。

const exec = require('child_process').exec;
gulp.task('release', ['build'], () => {
    return exec(        
        __dirname+'/node_modules/.bin/electron-builder .'
    ).on('close', () => process.exit());
});

关于node.js - 错误: Electron packaging with electron-packager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57193021/

相关文章:

node.js - 即使关联为空,关联填充也会返回结果

npm - 代码 EINVALIDTAGNAME npm ERR!标签名称无效 ">=^16.0.0": Tags may not have any characters that encodeURIComponent encodes

node.js - 在本地安装时如何让我的 NPM 包显示 "npm WARN prefer global"

node.js - 如何正确地将 Electron nodejs程序构建为.exe?

javascript - 在 JavaScript 中发生事件后退出函数

node.js - OpenShift node.js 错误 : listen EACCES

javascript - 是否可以在 Electron js 的 OS X 上启用非狮子式全屏?

javascript - jQuery 未定义,Electron

node.js - 多次调用异步函数

javascript - 在Electron JS中无法使用 Remote 关闭窗口