小编Del*_*rak的帖子

如何使用 Phusion Passenger 纠正此 ESM 错误?

我正在尝试使用 Phusion Passenger 在生产服务器上启动我的 NodeJS API。我使用了最后的 ECM 语法来导入/导出我的模块。然而,当尝试访问我的 api 时,Passenger 返回此错误消息:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/***/api/server.mjs
    at Module.load (internal/modules/cjs/loader.js:948:11)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at Module.require (/opt/passenger/src/helper-scripts/node-loader.js:80:25)
    at require (internal/modules/cjs/helpers.js:92:18)
    at loadApplication (/opt/passenger/src/helper-scripts/node-loader.js:243:2)
    at setupEnvironment (/opt/passenger/src/helper-scripts/node-loader.js:214:2)
    at Object.<anonymous> (/opt/passenger/src/helper-scripts/node-loader.js:133:1)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) {
  code: 'ERR_REQUIRE_ESM'
Run Code Online (Sandbox Code Playgroud)

我的 package.json 中有该"type": "module"行,我尝试将扩展名从 .js 更改为 .mjs,但没有效果。

我注意到,乘客使用带有“require”语法的 CJS 来加载我的 server.js,如下所示: https: //github.com/phusion/passenger/blob/stable-6.0/src/helper-scripts/node-loader .js

function loadApplication() {
    var appRoot = PhusionPassenger.options.app_root || process.cwd(); …
Run Code Online (Sandbox Code Playgroud)

javascript passenger node.js node-modules

10
推荐指数
2
解决办法
4077
查看次数

标签 统计

javascript ×1

node-modules ×1

node.js ×1

passenger ×1