【问题标题】:Electron build app doesnt start express server电子构建应用程序不启动快速服务器
【发布时间】:2018-10-30 09:17:17
【问题描述】:

我正在构建一个应用程序,并且在我处于开发者模式时一切正常。 Everythink 可以正常工作。但是当我用电子生成器打包我的应用程序时,应用程序打开但它没有启动快速服务器并且应用程序无法正常工作。

这是我的 package.json 代码

{
  "name": "artros",
  "version": "1.0.0",
  "description": "Artros",
  "author": "MC3",
  "license": "ISC",
  "main": "start.js",
  "scripts": {
        "pack": "build --dir",
        "dist": "build"
    },
    "build": {
        "appId": "com.artros.app",
        "productName": "Artros",
        "win": {
            "target": "portable",
            "icon": "build/icon.ico"
        },
        "mac": {
            "target": "dmg"
        }
    },
  "dependencies": {
    "body-parser": "^1.18.3",
    "ejs": "^2.5.7",
    "electron-pdf-window": "^1.0.12",
    "express": "^4.16.2",
    "multer": "^1.3.0",
    "nodemailer": "^4.6.4",
    "path": "^0.12.7"
  },
    "devDependencies": {
        "electron": "^1.8.2"
    }
}

这是我的 start.js 代码

 const cluster = require('cluster');
    if (cluster.isMaster) {
      require('./main.js'); // your electron main file
      cluster.fork(); 
    } else {
      require('./app.js'); // your server code
    }

还有我的 main.js 代码

var electron = require('electron');
var browserWindow = electron.BrowserWindow;
var app = electron.app;

app.on('ready', function(){
    var appWindow;

//appWindow
    appWindow = new browserWindow({
        width:1120,
        height:620,
        webPreferences: {
            plugins: true
        },
        icon: __dirname + '/public/icon/icon.png' 
    });
    appWindow.loadURL('file://' +__dirname + '/public/prva.html');

    //appWindow.webContents.openDevTools();
});

// close app after all windows are closed
    app.on('window-all-closed', () => {
  app.quit()
})

如果有人知道问题出在哪里,请发布。谢谢

【问题讨论】:

    标签: javascript express server electron


    【解决方案1】:

    我也遇到过类似的事情。挑战在于,如果您使用 fork() 应用程序路径会发生变化。因此,我建议您在所有文件中检查__dirname,尤其是在您的分叉进程中的文件(例如 app.js)。如果其中一些不再有意义,我不会感到惊讶。

    【讨论】:

    • 我将视图和静态路径更改为 app.set('views', path.join(__dirname, 'views'));和 app.use(express.static(path.join(__dirname, 'public')));但仍然没有成功。在没有 path.join 和 __dirname 之前
    • 我的意思是你首先调试你的应用程序而不是改变任何东西。 1. 为你的应用做一个最小的例子。 2. 添加一个console.log(__dirname);到每个文件(尤其是在 fork 中开始) 3. 在打包应用程序后检查控制台中的结果路径是否有意义。
    【解决方案2】:

    我找到了解决方案。问题确实出在我的 app.js 代码中。在一个目的地,我需要添加 (path.join(__dirname, './path/to/file'))。伙计们感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2018-03-15
      • 2017-11-03
      • 1970-01-01
      • 2018-12-15
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多