【发布时间】:2021-05-16 15:29:10
【问题描述】:
我正在编写一个 react-electron 应用程序,我注意到当我使用 electron-builder 构建它时,二进制文件在调用“spawn”时被卡住了。
使用“yarn start”可以毫无问题地执行应用程序。只有使用电子生成器才会卡住。
你能帮忙吗?
谢谢,
更新
似乎作为程序一部分包含的 C++ 二进制文件无法在电子中执行。如果我给出二进制文件的硬编码完整路径,它可以工作,但如果我给出 __dirname 的路径,我会收到错误
const GetLocalPath = () => {
const path = __dirname + "/../cpp_program/"
return {
helloWorld: path+ "helloWorld",
helloWorldRepeat: path+ "helloWorldRepeat"
}
}
export function helloWorld(){
// let dir = "/Users/Rick/projects/lala/github/tutorial/electron-tutorial-app/cpp_program";
let comm = GetLocalPath().helloWorld;
错误信息
internal/child_process.js:403 Uncaught (in promise) Error: spawn ENOTDIR
at ChildProcess.spawn (internal/child_process.js:403)
at Object.spawn (child_process.js:562)
at helloWorldRepeat (/Users/ricky/proje…ar/build/Lib.js:113)
at Object.<anonymous> (/Users/ricky/proje…sar/build/Lib.js:49)
at Generator.next (<anonymous>)
at /Users/ricky/proje…asar/build/Lib.js:9
at new Promise (<anonymous>)
at __awaiter (/Users/ricky/proje…asar/build/Lib.js:5)
at Object.handleInitialize (/Users/ricky/proje…sar/build/Lib.js:35)
at TestStateMachine.transition (/Users/ricky/proje…tStateMachine.js:56)
这很奇怪,因为它与“yarn start”(即“tsc && electron”)配合得很好
package.json 如下所示
"scripts": {
"start": "tsc && electron ."
},
"build": {
"appId": "com.example.myapp",
"productName": "MyApp",
"files": [
"build/**/*",
"public/**/*",
"src/images/**/*"
]
},
更新版本 2
根据 Alexander 的建议,我已包括在内
"asar": false
在 package.json 中
当我执行它时,我得到一个不同的错误
Uncaught Error: spawn /Users/Rick/projects/lala/github/tutorial/electron-tutorial-app/dist/mac/MyApp.app/Contents/Resources/app/build/../cpp_program/helloWorldRepeat ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:269)
at onErrorNT (internal/child_process.js:465)
at processTicksAndRejections (internal/process/task_queues.js:80)
errnoException @ internal/errors.js:510
ChildProcess._handle.onexit @ internal/child_process.js:269
onErrorNT @ internal/child_process.js:465
processTicksAndRejections @ internal/process/task_queues.js:80
现在的错误是 /Users/Rick/projects/lala/github/tutorial/electron-tutorial-app/dist/mac/MyApp.app/Contents/Resources/app/build 中没有“helloWorldRepeat”文件/../cpp_program/.
二进制文件实际上位于
/Users/Rick/projects/lala/github/tutorial/electron-tutorial-app/build/../cpp_program/helloWorldRepeat
我必须手动创建这个文件夹并粘贴二进制文件吗?
【问题讨论】:
标签: reactjs electron electron-builder spawn