提问者:小点点

为什么不能在构建的电子应用程序中读取package.json?


大家好,Stackoverflow用户!

我试图将电子应用程序的所有配置放在package.json文件中。

下面是我的代码片段:
index.js

const { app, BrowserWindow, ipcMain } = require('electron');
const fs = require('fs');

function readConf() {
  const data = fs.readFileSync('./package.json', 'utf8');
  return data;
}

ipcMain.on('synchronous-message', (event, arg) => {
  event.returnValue = readConfig();
})

index.html

<script type="text/javascript">
const { ipcRenderer } = require('electron')
config = JSON.parse(ipcRenderer.sendSync('synchronous-message', ''))
</script>
<h1>Version of <script>document.write(config.name)</script> is <script>document.write(config.version);</script></h1>

当您通过npm start运行应用程序时,代码可以正常工作,但是当您使用electron-forge和squirrel(npm make)将其转换为exe并在安装后尝试运行它时,会抛出一个错误,即无法找到package.json文件。那么您需要指定什么作为文件的路径,以便在构建的应用程序中读取它呢?

我用的是电子锻造。


共1个答案

匿名用户

我找到了解决问题的方法!

而不是

const data = fs.readFileSync('./package.json', 'utf8');

你需要写

const data = fs.readFileSync(__dirname + '/../package.json', 'utf8');