首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ES模块运行pm2

使用ES模块运行pm2
EN

Stack Overflow用户
提问于 2021-12-22 14:08:06
回答 2查看 1.5K关注 0票数 3

如何将pm2与基于ES模块的包(类型:“模块”)结合使用,我在没有任何有用帮助的情况下研究了类似的问题(有人说它在windows上不起作用,但我使用的是linux)。

我总是收到错误:

代码语言:javascript
复制
Error [ERR_REQUIRE_ESM]: require() of ES Module /opt/app/server/lib/src/index.js not supported.
0|any| Instead change the require of index.js in null to a dynamic import() which is available in all CommonJS modules.

我的ecosystem.config.js看起来像:

代码语言:javascript
复制
const os = require('os');
module.exports = {
    apps: [{
        port        : 3000,
        name        : "any",
        script      : "lib/src/index.js",
        watch       : true,           
        instances   : os.cpus().length,
        exec_mode   : 'fork',         
        env: {
            NODE_ENV: "production",
        }
    }]
}

index.js是使用“导入”语法的ES模块。我如何告诉pm2应该使用这种方式导入

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-15 00:59:38

要实现这一点,您可以创建一个中间CommonJS模块,该模块从ESModule加载应用程序。可以使用公共‘s模块中的import函数。

这看起来是这样的:

  • ecosystem.config.js
  • lib/src/index.cjs CommonJS入口点(用于PM2).
  • lib/src/index.js ESModule入口点)(用于与ESM兼容的tools).
  • lib/src/app.js应用程序代码.

)

ecosystem.config.js

代码语言:javascript
复制
const os = require('os');
module.exports = {
    apps: [{
        port        : 3000,
        name        : "any",
        script      : "lib/src/index.cjs", //  CommonJS
        watch       : true,           
        instances   : os.cpus().length,
        exec_mode   : 'fork',         
        env: {
            NODE_ENV: "production",
        }
    }]
}

lib/src/index.js

代码语言:javascript
复制
import {app} from './app.js'

app()

lib/src/index.cjs

代码语言:javascript
复制
import('./app.js') //  There is import function available in CommonJS
.then(({app}) => {
 app()
})

lib/src/app.js

代码语言:javascript
复制
import {hello} from './greet.js'

export function app() {
  console.log(hello('World'))
}

lib/src/greet.js

代码语言:javascript
复制
export function hello(name) {
  return `Hello, ${name}!`
}
票数 4
EN

Stack Overflow用户

发布于 2022-08-04 07:04:42

ecosystem.config.js重命名为ecosystem.config.cjs为我工作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70450332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档