只要我使用终端/ cmd行启动它,我的应用就会正常工作。 现在我使用电子打包器打包了应用程序,但我收到以下两个错误:
Uncaught Exception:
Error: ENOENT: no such file or directory, open 'settings.json'
和
Uncaught Exception:
SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at ReadFileContext.fs.readFile [as callback] (/Users/zeno/Applications/splyr-cop/dist/splyr-cop-darwin-x64/splyr-cop.app/Contents/Resources/app.asar/main.js:202:21)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:359:13)
这些错误只发生在应用程序的打包版本中。 我假设它与settings.json和billing.json的路径有关:
const path = require('path');
var settings = path.resolve('./settings.json');
var billing = path.resolve('./billing.json');
Both .json are placed directly in the folder of the app.
根据电子包装工具的常见问题解答,这是一个常见错误(see here)。
他们推荐这样的东西:
`AppName
├──package.json
├──数据 - &gt; somedata.json
└──src - &gt; main.js
在src / main.js中,您将访问与此类似的data / somedata.json:
const path = require('path'); const jsonFilename = path.resolve(__dirname, '..', 'data', 'somedata.json'); console.log(require(jsonFilename));
还尝试使用const而不是var,但这只会导致另一个错误。应用程序应该可以对settings.json进行更改。
第202行看起来像这样(202是:profiles = JSON.parse(data);)
ipcMain.on('setupUi', function(event) {
fs.readFile('settings.json', (err, data) => {
if(err){throw err;} else{
settings = JSON.parse(data);
mainWin.webContents.send('setupUi', JSON.parse(data));
}
});
fs.readFile( 'billing.json', (err, data) => {
profiles = JSON.parse(data);
for (p in profiles) {
switch(profiles[p].country) {
case 'US':
profilesUS[p] = profiles[p];
break;
case 'UK':
profilesUK[p] = profiles[p];
}
}
});
})
还尝试了“var settings = path.resolve(__ dirname,'settings.json');”没什么用的。
“settings = JSON.parse(data);”可能出现问题吗?
我真的很感激任何帮助,我一直试图解决这个问题几个小时。