【发布时间】:2022-12-17 03:04:34
【问题描述】:
因此,我今天花了好几个小时尝试放置完全使用 ESM(模块)的 nodeJS 应用程序,并且我已经通过 cPanel 将其部署在使用 Node v. 14.20.1 的服务器上。我不断收到错误消息:
App 1153856 output: internal/modules/cjs/loader.js:948
App 1153856 output: throw new ERR_REQUIRE_ESM(filename);
App 1153856 output: ^
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /<serverlocation>/app.js
App 1153856 output: at new NodeError (internal/errors.js:322:7)
App 1153856 output: at Module.load (internal/modules/cjs/loader.js:948:11)
App 1153856 output: at Function.Module._load (internal/modules/cjs/loader.js:790:12)
App 1153856 output: at Module.require (internal/modules/cjs/loader.js:974:19)
App 1153856 output: at Module.require (/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js:80:25)
所有文件都写成模块,我在任何地方都没有“require()”。
由于 Node 从 v14 开始完全支持 JS 模块,我大胆猜测我正在使用的托管服务器(以及他们的 NodeJS Passenger)正在使用一个在调用我的应用程序时使用“require()”的加载器。 .js 文件。 我尝试了多种解决方案,我什至将我的 app.js 文件切换为 CommonJS 类型,但随后它要求我将所有其他文件也切换为 CJS,这太麻烦了。
有没有人设法找到解决这个问题的合适方法?
【问题讨论】:
-
你确定
package.json中有"type": "module"吗? -
@KonradLinkowski 是的,从一开始。还尝试将其删除并将文件重命名为 .mjs,但这也无济于事。
标签: node.js passenger es6-modules