打开我打包的Node.js应用程序时出错,打开未打包的应用程序时没有错误

时间:2017-12-13 16:30:19

标签: javascript json node.js path electron-packager

只要我使用终端/ 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);”可能出现问题吗?

我真的很感激任何帮助,我一直试图解决这个问题几个小时。

0 个答案:

没有答案
相关问题