【发布时间】:2018-10-16 01:25:45
【问题描述】:
我在 Electron 项目的工作目录中名为 data 的目录中有一些 JSON 文件。我使用electron-build 使用以下配置(package.json)成功构建了应用程序。
{
"name": "My App",
"version": "0.0.9",
"description": "TEST DESC",
"main": "main.js",
"scripts": {
"start": "electron .",
"pack": "build --dir",
"dist": "build"
}
"author": "Test",
"license": "CC0-1.0",
"build": {
"appId": "test.tester.test",
"directories": {
"app": ""
},
"extraFiles": [
"data"
],
"dmg": {
"contents": [
{
"x": 110,
"y": 150
},
{
"x": 240,
"y": 150,
"type": "link",
"path": "/Applications"
}
]
},
"win": {
"target": "squirrel",
"icon": "build/icon.ico"
}
},
"devDependencies": {
"electron": "~1.7.8",
"electron-builder": "^20.11.1"
},
"dependencies": {
"electron-settings": "^3.1.4",
"jquery": "^3.3.1",
"leveldown": "^3.0.0",
"mkdirp": "^0.5.1",
"shelljs": "^0.8.1"
}
}
我想 data 目录没有被添加到构建文件中。因为我使用 data 目录中的文件来呈现应用程序中的视图,这在构建的应用程序中不起作用。请提出解决方案。
我在应用程序中使用这些 JSON 文件,如下所示:
fs.readFile('./data/userdata.json', 'utf8', function readFileCallback(err, data) {
if(data == '') { data = '[]'; }
var users = JSON.parse(data);
//Render Code
});
【问题讨论】:
-
顺便说一句,您可以通过查看安装目录来查看它是否被包含在内:
/Users/username/AppData/Local/Programs/appname/resources/app。这就是它在 Windows 上的位置,虽然我不确定它在 mac 或 linux 上的位置 -
这些文件是只读的还是你编辑那些 json 文件(如果只读你可以把它们留在 asar 中)?您的 extraFiles 属性看起来有点奇怪。你的数组应该包含这种类型的对象:
{ from: 'sourcePattern', to: 'targetPattern'} -
试试 app.getAppPath() 和 app.getPath 方法。 electronjs.org/docs/api/app#appgetapppath
标签: javascript node.js electron electron-builder