Javascript FS模块没有';电子封装后不能工作

Javascript FS模块没有';电子封装后不能工作,javascript,node.js,electron,Javascript,Node.js,Electron,我试图通过创建一个简单的项目来学习electron,当我使用npm start编写start it时,它可以工作,但是当我使用electron packager打包时,node js部分不再工作 这是主要的过程: const { app, BrowserWindow, ipcMain , globalShortcut} = require('electron'); const fs = require('fs'); let mainWindow; function createWindow

我试图通过创建一个简单的项目来学习electron,当我使用
npm start
编写start it时,它可以工作,但是当我使用electron packager打包时,node js部分不再工作

这是主要的过程:

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

let mainWindow;

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false
    }
  });
  mainWindow.loadFile('src/index.html');

  globalShortcut.register('f5', function() {
        mainWindow.reload()
    })
};

app.whenReady().then(() => {
  createWindow()

app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
});

ipcMain.on("message", (event, arg) => {
    const data = {
      "num": arg
    };
    fs.writeFile('src/data.json', JSON.stringify(data), () => {
      event.returnValue = "success";
    })
})
这是渲染器过程:

const {ipcRenderer} = require("electron");
const saveBtn = document.getElementById('saveBtn');
const inp = document.getElementById('inp');
const fetchBtn = document.getElementById('fetchBtn');

saveBtn.onclick = () => {
  if (!inp.value) return alert("Your input is empty");
  if (isNaN(inp.value)) return alert("The input is not a number");

  ipcRenderer.sendSync("message", inp.value);
}

fetchBtn.onclick = () => {
  fetch("data.json")
    .then(res => res.json())
    .then(res => console.log(res.num))
}
这是package.json文件:(忽略电子锻造的东西)

而data.json文件只是一个具有
num
属性和值的对象

当我使用
npm start
运行程序时,我可以给出一个值并更改json文件的值,但当我使用electron packager打包应用程序时,它不起作用


也为我写的乱七八糟的代码感到抱歉。我刚刚开始学习编码。

看起来您没有将
fs
指定为依赖项,因此它没有被捆绑在应用程序中。“它不工作”到底意味着什么?您是否收到任何错误和输出?
BrowserWindow
是否加载您指定的HTML文件,还是应用程序根本不启动?我可以确认@spring所建议的是没有必要的。但是,您必须小心路径——打包后它们可能会有所不同。Alexander是对的。一旦我使用electron builder构建了应用程序,json文件的路径就改变了,所以我必须获得新的路径,然后它才能工作。以前,我甚至更改了代码,如果它无法写入文件,它会给出一个错误,然后将消息显示给IPC渲染器,但它没有给出任何错误,因此我再次更改代码以读取文件而不是写入文件,最后它给出了一个错误,表示路径不正确。非常感谢所有发表评论的人。这是我第一次使用stack overflow,我被这个神奇的社区所震撼。
{
  "name": "electron-project",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "build": {
    "asar": false
  },
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@electron-forge/cli": "^6.0.0-beta.54",
    "@electron-forge/maker-deb": "^6.0.0-beta.54",
    "@electron-forge/maker-rpm": "^6.0.0-beta.54",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.54",
    "@electron-forge/maker-zip": "^6.0.0-beta.54",
    "electron": "^12.0.2"
  },
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"
  },
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "electron_project"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        },
        {
          "name": "@electron-forge/maker-deb",
          "config": {}
        },
        {
          "name": "@electron-forge/maker-rpm",
          "config": {}
        }
      ]
    }
  }
}