Swagger-JSdoc 不适用于 Node.JS 14.15.4 错误“ERR_REQUIRE_ESM”

Posted

技术标签:

【中文标题】Swagger-JSdoc 不适用于 Node.JS 14.15.4 错误“ERR_REQUIRE_ESM”【英文标题】:Swagger-JSdoc is not working on Node.JS 14.15.4 error 'ERR_REQUIRE_ESM' 【发布时间】:2021-07-05 23:44:03 【问题描述】:

这不是重复的,我已经研究并检查了其他堆栈溢出链接,例如 this、this 和 this

我像这样在现有的 Node.JS 应用程序中导入了 swagger

var swaggerJsdoc = require("swagger-jsdoc"),
var swaggerUi = require("swagger-ui-express");

但错误出现在控制台正在跟踪的 swagger-jsdoc 上

内部/模块/cjs/loader.js:1080 throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath); ^

错误 [ERR_REQUIRE_ESM]:必须使用导入来加载 ES 模块: D:\myTestProject\node_modules\swagger-jsdoc\index.js require() of ES 不支持模块。要求()的 D:\myTestProject\node_modules\swagger-jsdoc\index.js 来自 D:\myTestProject\index.js 是一个 ES 模块文件,因为它是一个 .js 文件 其最近的父 package.json 包含 "type": "module" 其中 将该包范围内的所有 .js 文件定义为 ES 模块。反而 重命名 D:\myTestProject\node_modules\swagger-jsdoc\index.js 以结束 .cjs,将要求代码更改为使用 import(),或删除“类型”: “模块”来自 D:\myTestProject\node_modules\swagger-jsdoc\package.json。

at Object.Module._extensions..js (internal/modules/cjs/loader.js:1080:13)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (D:\myTestProject\index.js:3:16)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)    code: 'ERR_REQUIRE_ESM' 

【问题讨论】:

【参考方案1】:

我已经尝试了以下步骤,但没有奏效

    在节点启动脚本中添加了标志“--experimental-modules” npm install esm --save //这也不起作用

但现在我终于找到了一个解决方案,它不需要您将 .js 文件重命名为 .mjs,如果您已经在运行 Node.Js 版本 12 或更高版本,它也不需要升级您的节点

只需将你的 swagger-jsdoc 降级到 6.1.0,它是使用 CommonJS 工具构建的,起初我使用的是 swagger-jsdoc 7.x,它不是使用 CommonJS 构建的strong> 降级 swagger-jsdoc 的工具使用 npm 的以下命令

npm install swagger-jsdoc@6.0.1

【讨论】:

以上是关于Swagger-JSdoc 不适用于 Node.JS 14.15.4 错误“ERR_REQUIRE_ESM”的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UITableViewAutomaticDimension 不适用于 sectionFooterHeight?

为啥排序不适用于矢量?

验证不适用于 saveMany

UipanGesture 不适用于 Uiswitch

jQuery 不适用于 Express

为啥 MultiBinding 不适用于 CornerRadius