【问题标题】:npm scripts in sequence with expressjs使用 expressjs 顺序执行 npm 脚本
【发布时间】:2016-02-01 17:31:28
【问题描述】:

我需要依次运行三个脚本,中间是启动 expressjs 服务器。

这是我的脚本:

  1. npm run build

  2. npm start

  3. node ./node_modules/nightwatch/bin/runner.js -c ./nightwatch.json

原因是 nightwatch 需要运行服务器以进行测试,但是在启动 expressjs 时,我卡在了日志/进程中,而没有继续执行下一个脚本。当我有 npm start & 时,它确实在后台运行它,但启动时间比 nightwatch 第三个脚本要长,所以 nightwatch 调用尚未启动的服务器并失败。

【问题讨论】:

    标签: node.js express npm nightwatch.js


    【解决方案1】:

    诀窍是使用forever 包将服务器作为守护进程运行,并使用 sleep 命令等待服务器启动,然后再启动 nightwatchjs。

    下面是 npm 脚本命令:

    forever start app.js && sleep 5 && nightwatch --env chrome,default && forever stopall
    

    最后别忘了停止所有的守护进程

    最好的问候

    【讨论】:

      【解决方案2】:

      您可以在 package.json 中添加一个脚本,例如我添加了依次运行 3 个命令的 watch 脚本,并且每个命令只有在前一个命令成功时才会运行,所以我可以运行:npm run watch

      package.json
      "scripts": {
          "nightwatch": "node ./node_modules/nightwatch/bin/runner.js -c
           ./nightwatch.json",
           'build':'.....',
           'start':'.....',
           "watch":'npm run build && npm start && npm run nightwatch'
        }
      

      希望这可以帮助,未经测试,您可以阅读此reference

      【讨论】:

      • 这就是我目前所拥有的,问题是启动脚本是expressjs,这是一个在您执行CMD + C之前不会关闭的进程,因此它永远不会进入第三个进程。
      • 尝试将 && 改为 & ,
      • 但是服务器启动大约需要 3-4 秒,而 nightwatch 立即启动,没有服务器运行并且失败
      猜你喜欢
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2022-12-21
      • 2019-04-16
      • 2013-10-10
      相关资源
      最近更新 更多