可以用pm2启动Vue cli的开发服务器吗?

rea*_*ebo 4 pm2 vue.js yarnpkg

使用 vue cli 创建 Vue 项目后,我们可以使用

yarn run serve
Run Code Online (Sandbox Code Playgroud)

我无法开始使用 pm2。跑步

pm2 start yarn -- run serve
Run Code Online (Sandbox Code Playgroud)

我遇到了几次崩溃和重启,之后,pm2 将停止尝试重启。在日志中我可以看到

C:\PROGRAM FILES (X86)\YARN\BIN\YARN.CMD:1
(function (exports, require, module, __filename, __dirname) { @echo off
                                                              ^

SyntaxError: Invalid or unexpected token
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Object.<anonymous> (C:\Users\Utente\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:27:21)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
Run Code Online (Sandbox Code Playgroud)

我从我的项目的根目录运行 pm2 命令,在那里运行yarn run serve没有问题

rea*_*ebo 5

我的解决方案

首先,删除所有正在运行的pm2实例

pm2 delete all
Run Code Online (Sandbox Code Playgroud)

然后输入这个配置为 ecosystem.js

module.exports = {
  apps: [
    {
      name: "WEB",
      script: "./node_modules/@vue/cli-service/bin/vue-cli-service.js",
      args: "serve"
    }
  ]
};
Run Code Online (Sandbox Code Playgroud)

注意:vue 服务器本身已经设置为进行监视和重新加载,所以不要将 watch 添加到 pm2 设置,否则整个开发服务器将重新启动,而不是执行 vue-cli-service 的普通热重新加载

另外:我建议安装 pm2-logrotate

然后重新启动

pm2 start ecosystem.js
Run Code Online (Sandbox Code Playgroud)

要跟踪日志,只需使用

pm2 logs
Run Code Online (Sandbox Code Playgroud)

最终将应用程序名称添加为参数以仅查看一个日志

用例

我正在使用它在本地 smtp-catcher 服务器和 webapp 上工作来读取捕获的电子邮件