ctx.body = "Hell-6ren">
gpt4 book ai didi

javascript - 为什么 pm2 忽略了传递给 ecosystem.config.js 文件中 Node 的 --experimental-modules?

转载 作者:行者123 更新时间:2023-12-01 17:21:20 31 4
gpt4 key购买 nike

这是我的 main.js 文件:

import Koa from "koa";

const app = new Koa();
app.use(async ctx => ctx.body = "Hello, World!");
app.listen(3000);

这是我的package.json 文件:

{
"type": "module",
"name": "koa-sandbox",
"version": "1.0.0",
"description": "",
"main": "./src/main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node --experimental-modules ./src/main.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"koa": "^2.7.0"
}
}

当我通过 npm 启动它时它工作正常:

npm 开始

现在我需要通过 pm2 做同样的事情。这是我的 ecosystem.config.js 文件:

module.exports = {
apps : [{
name: 'API',
script: './src/main.js',
node_args : '--experimental-modules',
instances: 1,
autorestart: true,
watch: true,
max_memory_restart: '1G',
}],
};

我开始我的应用程序:

pm2 启动.\ecosystem.config.js

但我看到了结果:

enter image description here

在日志文件中我看到了:

(node:12696) ExperimentalWarning: The ESM module loader is experimental.
C:\lab\koa-sandbox\src\main.js:1
import Koa from "koa";
^^^

SyntaxError: Unexpected identifier
at Module._compile (internal/modules/cjs/loader.js:720:22)

为什么 pm2 忽略了 --experimental-modules 传递给 ecosystem.config.js 中的 node文件?

我看到了类似的问题here但它仍然没有回答......

最佳答案

为了使用 esm import,我正在使用 esm package

您可以添加一个文件,例如 index.js 并在文件中

require = require("esm")(module/*, options*/)
module.exports = require("./main.js")

并将ecosystem.config.js修改为

module.exports = {
apps : [{
name: 'API',
script: './src/index.js',
instances: 1,
autorestart: true,
watch: true,
max_memory_restart: '1G',
}],
};

package.json 中你不需要

"start": "node --experimental-modules ./src/main.js"

脚本将在没有 --experimental-modules 的情况下运行。

只是

"start": "node ./src/index.js"

关于javascript - 为什么 pm2 忽略了传递给 ecosystem.config.js 文件中 Node 的 --experimental-modules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57382237/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com