繁体   English   中英

带React的Electron:如何设置生产Web服务器

[英]Electron with React: how to setup production webserver

我有电子应用程序,该应用程序加载运行在端口8080上的webpack-dev-server上的React应用程序。Reactapp正在与端口9001上的节点服务器应用程序进行通信。如何在生产中设置Webserver? 我现在要尝试的是通过安装后脚本分别安装节点。 因此,electron使用自己的节点打包版本,而webpack-dev-server使用通过脚本安装的另一版本的节点。 我觉得这不是正确的方法。 我如何在webpack-dev-server中使用电子版的node? 是否有可能使其仅对电子版和webpack-dev-server使用节点的打包版本? 谢谢

由于Windows上的安装后问题,通过deb依赖关系安装节点的想法不好-编写要在Windows上安装的依赖关系并不容易。 相反,我下载了节点二进制文件,并将节点二进制文件打包为asar软件包。 我使用文件选项仅打包二进制文件,以便平台正在运行:

package.json:

"build": {
    "asarUnpack": [
      "**/*"
    ],
    "files": [
      "!binaries",
      "binaries/${os}/${arch}/node",
      "src",
      "*.html",
      "*.js",
      "*.tpl",
      "*.sh",
      "*.json",
      "*.md",
      "*.lock"
    ],

由于使用了asarUnpack选项,我可以解压缩asar软件包,并且可以访问文件系统上的节点二进制文件。 然后在主流程index.js中,我以这种方式构造节点路径:

const nodePath = path.join(
    process.resourcesPath,
    "app.asar.unpacked",
    'binaries',
    platform == "win32" ? "win" : platform,
    arch,
    "node"
)

const productionWebpackServerStartPathArgs = [`${process.resourcesPath}/app.asar.unpacked/node_modules/webpack-dev-server/bin/webpack-dev-server.js`, '--config', `${process.resourcesPath}/app.asar.unpacked/webpack.config.js`];
let webpack_dev_server_cmd = crossSpawn(nodePath, productionWebpackServerStartPathArgs );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM