node.js - 在 Electron 应用程序中访问和打包外部文件

标签 node.js electron

我正在构建具有应用程序内容(JSON文件)的第一个 Electron 应用程序。

我的问题是,使用 electronic-build 打包后,我无法访问应用程序内容。

我将有问题的JSON文件( mvdb.json )添加到外部资源,并在主流程中解析了路径。

package.json

"build": {
    "appId": "com.example.app",
    "extraResources": ["mvdb.json"],
    "mac": {
      "category": "your.app.category.type"
    },
    "win": { "target": ["portable", "NSIS"]
    },
    "directories": {
      "output": "release"
    }
  },

main.js

const fs = require('fs');

const isDev = process.env.NODE_ENV !== 'production'

// Load MOVIE Database
const MOVIE_DB_PATH = isDev ? path.join(__dirname, 'mvdb.json') : path.join(process.resourcesPath, 'mvdb.json');

...

fs.readFileSync(MOVIE_DB_PATH)


macOS软件包的版本在Contents/Ressources文件夹中具有mvdb.json文件,但是启动后会收到错误消息
Uncaught Exception:
Error: ENOENT, mvdb.json not found in /Users/me/Documents/projects/screenwriters-delight/electron/release/mac/screenwriters-delight.app/Contents/Resources/app.asar
at createError (electron/js2c/asar.js:111:17)
    at Object.fs.readFileSync (electron/js2c/asar.js:548:24)
    at loadDB ...


有什么建议?

最佳答案

试试这个

path.join(process.resourcesPath, '..', 'mvdb.json')
您需要将一个文件夹移回。

关于node.js - 在 Electron 应用程序中访问和打包外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469417/

相关文章:

javascript - 未捕获的TypeError : document. getElementById(...)。addEventHandler不是一个函数

node.js - Node 呈现的 HTML 文件未找到相对路径脚本

javascript - 如何仅在所有请求完成后才调用函数?

node.js - 如何在 Electron 应用程序中显示另存为对话框?

javascript - 无法阻止 Electron 窗口关闭

javascript - 如果数据很大,JQuery ajax 不会在 POST 中发送完整数据

node.js - Mongodb 聚合管道使用 $lookup 从数组返回多个字段

node.js - 刷新页面后套接字不工作

javascript - NodeJS - 如何抓取 ld+json 数据并将其保存到对象中

javascript - 是否可以在Electron中过滤URL?