首页 > 解决方案 > 如何修复 PM2 nodejs spawn babel-node ENOENT

问题描述

我正在尝试使用 PM2 运行我的 nodejs 项目。这是我的 package.json 的一部分

{
    "scripts": {
        "pretest": "yarn run test-cleanup",
        "preinstall": "yarn global add pm2",
        "build": "rm -rf dist && babel src --out-dir dist --source-maps --watch && cp -R src/utils/email/templates dist/utils/email/templates",
        "build:tests": "babel tests --out-dir dist-tests",
        "start": "pm2-runtime start ecosystem.prod.config.js",
        "dev": "pm2 start ecosystem.dev.config.js && pm2 log",
        "test": "concurrently 'yarn run test-not-ratelimit' 'yarn run test-ratelimit'",
        "test:watch": "yarn run test-cleanup && yarn run test-not-ratelimit --watch --verbose",
        "test-not-ratelimit": "ava --match='!*RateLimiter*' --fail-fast",
        "test-ratelimit": "TESTING_RATELIMITER=true ava --match='*RateLimiter*' --fail-fast",
        "test-cleanup": "node tests/_pretest-cleanup.js",
        "prettier": "prettier --config ./.prettierrc --write \"**/*.js\"",
        "lint": "prettier --check --config ./.prettierrc \"**/*.js\" && eslint ./src ./tests --max-warnings 0",
        "lint-fix": "yarn prettier && eslint --fix ./src ./tests"
    },
    "heroku-run-build-script": true,
    "devDependencies": {
        "@babel/cli": "^7.7.4",
        "@babel/core": "^7.7.4",
        "@babel/node": "^7.7.4",
        "@babel/preset-env": "^7.7.4",
        "@babel/register": "^7.7.4",
        "ava": "^2.4.0",
        "babel-plugin-module-resolver": "^3.2.0",
        "concurrently": "^5.0.0",
        "eslint": "^6.7.1",
        "eslint-config-airbnb": "^18.0.1",
        "eslint-config-prettier": "^6.7.0",
        "eslint-import-resolver-babel-module": "^5.1.0",
        "eslint-plugin-import": "^2.18.2",
        "eslint-plugin-prettier": "^3.1.1",
        "husky": "^3.1.0",
        "lint-staged": "^9.5.0",
        "prettier": "^1.19.1",
        "rewiremock": "^3.13.9",
        "sinon": "^7.5.0",
        "supertest": "4.0.2"
    },
    "engines": {
        "node": "12"
    }
}

我运行npm run dev并显示此错误:

PM2        |     at onErrorNT (internal/child_process.js:456:16)
PM2        |     at processTicksAndRejections (internal/process/task_queues.js:80:21)
PM2        | 2019-12-03T10:08:05: PM2 log: App [api:0] starting in -fork mode-
PM2        | 2019-12-03T10:08:05: PM2 log: App [api:0] online
PM2        | 2019-12-03T10:08:05: PM2 error: Error: spawn babel-node ENOENT
PM2        |     at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
PM2        |     at onErrorNT (internal/child_process.js:456:16)
PM2        |     at processTicksAndRejections (internal/process/task_queues.js:80:21)
PM2        | 2019-12-03T10:08:05: PM2 log: App [conductor:1] starting in -fork mode-
PM2        | 2019-12-03T10:08:05: PM2 log: App [conductor:1] online
PM2        | 2019-12-03T10:08:05: PM2 error: Error: spawn babel-node ENOENT
PM2        |     at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
PM2        |     at onErrorNT (internal/child_process.js:456:16)
PM2        |     at processTicksAndRejections (internal/process/task_queues.js:80:21)   

我尝试安装babel-clibabel-node全局但仍然遇到同样的错误。有什么建议吗?
P/s:这个项目已经在我朋友的 Macbook 上运行了,我用的是 Windows。可能Os差异是一个原因吗?

标签: node.jsexpressbabeljspm2babel-node

解决方案


推荐阅读