使用 "pm2 start "的Express应用程序的React总是显示状态为errored。

问题描述 投票:2回答:1

我有一个以Node为服务器的React应用,我在ES6中编写代码,并使用babel进行移植。我使用的是 Windows操作系统. 我使用NodeMon来观察变化,它在开发中运行良好。我正在为应用程序做一个生产配置,我想在开发和生产中都使用PM2。

下面是我的package.json中的脚本。

 "scripts": {
    "dev": "pm2 start --watch --interpreter babel-node src/server/server.js  --name appDev",
    ...
    "prod": "pm2 start build/server/server.js -i max --name appProd"
  }

我的src文件夹里有ES6的代码,并将ES5的代码转码到build文件夹里。如果我删除"-i max","prod "命令可以正常工作[使用"-i max "开始打开无限命令提示。希望部署后在服务器上也能正常工作]。

现在的问题是,"dev "脚本总是导致 "errored "状态,当我检查状态时,错误日志是空的。

有什么办法吗?我将在dev中运行NodeMon,在prod中运行PM2,但是为什么PM2在ES6和-interpreter babel-node中出现问题?

更新。我已经尝试了 --interpreter babel-cli 在全球范围内安装后,它以错误的方式失败了 [PM2][ERROR] Interpreter babel-cli does not seem to be available. 我在全球和本地都有babel-cli。

甚至 pm2 start app.js --interpreter ./node_modules/.bin/babel-node 没有工作。

node.js reactjs express package.json pm2
1个回答
0
投票

我在部署最新(12.16.2)版本的node时遇到了问题。 我在ES6和导入方面有问题。 我明白有更复杂的解决方案可以解决这个问题,但备份到node 12.4.0为我解决了这个问题。 注意:节点12.4.0是比12.16.2更早的版本。 我之所以选择12.4.0版本,是因为数字海洋的 "节点 "服务器就是用这个版本初始化的。 我想他们的服务器人员可能比我知道的多得多,就决定从他们的测试中作弊,可以这么说。

我使用12.4.0没有任何问题,你可以很容易地从node网站上下载一个早期版本。 如果你打算把它安装在Linux服务器上,我建议使用nvm。 我曾用nvm回到12.4.0,但还是有问题(对不起,我忘了具体细节)。 我只是用普通的Ubuntu 18.04 LTS从新镜像重新做了服务器,目前还不错。 即使是我用来开发的node的本地Windows安装,我也不得不进行完全卸载和干净安装来避免问题。 如果有能力的话,强烈建议走这个路线。

祝您好运。

© www.soinside.com 2019 - 2024. All rights reserved.