如何在pm2

时间:2018-02-06 06:58:47

标签: node.js pm2 babel-node babel-cli

我想用pm2包管理我的节点进程。 如果我的代码中没有任何es6语法,所以我不需要添加babel-node,并且没有任何es6语法代码,我可以用pm2代码运行我的代码

pm2 start server.js

但是只要我添加任何es6语法代码行,就像这样

import express from 'express';

我收到意外令牌导入的错误。

如您所知,要解决此问题,我们必须添加babel-node软件包。

但是当我使用这行命令编译我的代码时

pm2 start server.js --interpreter babel-node

我收到此错误

Error: spawn babel-node ENOENT
at _errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)

这个奇怪的是,如果我不使用pm2并使用这行代码运行代码

babel-node server.js

每件事都没问题。

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:5)

使用yarn add babel-cli在您的项目中安装babel-cli,然后您可以运行 pm2 start ./server.js --interpreter ./node_modules/babel-cli/bin/babel-node.js

答案 1 :(得分:1)

我刚刚开始使用pm2,我发现this有帮助。

你有你的npm脚本来运行es6 js,比如

{
  ...
  "scripts": {
    "server": "babel-node ./src/server.js"
  },
  ...
}

然后使用pm2运行它,你使用pm2 start npm -- run server 确保全局安装babel-cli

答案 2 :(得分:0)

检查pm2日志文件以跟踪错误。 日志文件的位置在/root/.pm2 /

答案 3 :(得分:0)

我在使用babel的Node.js项目中解决了此问题。

首先您必须拥有

"devDependencies": {
   "@babel/core": "^7.11.6",
   "@babel/node": "^7.10.5",
   "@babel/preset-env": "^7.11.5",
   "eslint": "^7.9.0"
}

在package.json文件中。

然后您可以使用

pm2 start bin/www --interpreter node_modules/@babel/node/bin/babel-node.js
终端上的

命令。就是这样,您的项目将支持babel配置。 :)