运行 带有 ES 模块的 pm2
run pm2 with ES modules
我如何将 pm2 与基于 ES 模块(类型:“模块”)的包结合使用
我在没有任何有用帮助的情况下调查了类似的问题(有人说它不适用于 windows,但我正在使用 linux)
我总是收到错误:
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 看起来像:
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 应该使用这种导入方式
要实现这一点,您可以创建一个中间 CommonJS 模块,它从 ESModule 加载您的应用程序。可以使用 commonJs 模块中可用的 import
函数。
这可能是这样的:
ecosystem.config.js
lib/src/index.cjs
CommonJS 入口点(对于 PM2)。
lib/src/index.js
ESModule 入口点(用于 ESM 兼容工具)。
lib/src/app.js
申请代码。
ecosystem.config.js
:
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
:
import {app} from './app.js'
app()
lib/src/index.cjs
:
import('./app.js') // There is import function available in CommonJS
.then(({app}) => {
app()
})
lib/src/app.js
:
import {hello} from './greet.js'
export function app() {
console.log(hello('World'))
}
lib/src/greet.js
:
export function hello(name) {
return `Hello, ${name}!`
}
我如何将 pm2 与基于 ES 模块(类型:“模块”)的包结合使用 我在没有任何有用帮助的情况下调查了类似的问题(有人说它不适用于 windows,但我正在使用 linux)
我总是收到错误:
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 看起来像:
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 应该使用这种导入方式
要实现这一点,您可以创建一个中间 CommonJS 模块,它从 ESModule 加载您的应用程序。可以使用 commonJs 模块中可用的 import
函数。
这可能是这样的:
ecosystem.config.js
lib/src/index.cjs
CommonJS 入口点(对于 PM2)。lib/src/index.js
ESModule 入口点(用于 ESM 兼容工具)。lib/src/app.js
申请代码。
ecosystem.config.js
:
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
:
import {app} from './app.js'
app()
lib/src/index.cjs
:
import('./app.js') // There is import function available in CommonJS
.then(({app}) => {
app()
})
lib/src/app.js
:
import {hello} from './greet.js'
export function app() {
console.log(hello('World'))
}
lib/src/greet.js
:
export function hello(name) {
return `Hello, ${name}!`
}