【问题标题】:npm wait for port/command before executing next (concurrently)npm 在执行下一个(并发)之前等待端口/命令
【发布时间】:2022-03-23 04:09:13
【问题描述】:

所以在我的 npm 包中,我目前有这个脚本:

"start": "concurrently --kill-others \"npm run dev\" \"electron .\""

问题是,由于当电子运行它的命令时服务器还没有启动,它显示为空白。这可以通过在服务器启动后重新加载应用程序来解决。

所以我想知道是否有一种方法可以通过检测端口或其他方法来等待服务器启动,这样我就不必自己重新加载了。

这是我设置 url 的方式(尝试在其中实现 Vue)。

let format = live ?
    url.format({
        pathname: path.join(__dirname, 'dist/index.html'),
        protocol: 'file:',
        slashes: true
    })
    :
    'http://localhost:8080'
// Specify entry point to default entry point of vue.js
win.loadURL(format);

【问题讨论】:

    标签: node.js npm electron


    【解决方案1】:

    这里的关键是立即启动您的开发服务器,然后实现自动重新加载或热模块更换。

    你看过electron-webpack吗?然后您的启动脚本将如下所示:

        "dev": "electron-webpack dev"
    

    还有你的 main.js:

      const url = process.env.NODE_ENV !== 'production'
        ? `http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}`
        : `file://${__dirname}/index.html`
    
      window.loadURL(url)
    

    我建议您查看 electron-webpack-quick-start 以获取实施示例。

    【讨论】:

      【解决方案2】:

      如果您想在启动脚本之前等待端口(或 URL)准备好,您可以使用 readyator

      安装:npm i readyator

      在使用readyator 启动 Electron 之前等待端口 80 准备好:

      readyator 80 "electron ."
      

      它还带有一个方便的 No​​de.js API:

      import {runWhenReady} from 'readyator';
      
      await runWhenReady([80], 'electron .');
      

      【讨论】:

        猜你喜欢
        • 2019-12-31
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2018-04-03
        • 1970-01-01
        • 2020-08-08
        • 1970-01-01
        相关资源
        最近更新 更多