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

赞恩·乌尔·阿比丁

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

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

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

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

internal/modules/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() 的 ES 模块。来自 D:\myTestProject\index.js 的 D:\myTestProject\node_modules\swagger-jsdoc\index.js 的 require() 是一个 ES 模块文件,因为它是一个 .js 文件,其最近的父 package.json 包含“类型”: “module”,它将该包范围内的所有 .js 文件定义为 ES 模块。而是将 D:\myTestProject\node_modules\swagger-jsdoc\index.js 重命名为以 .cjs 结尾,更改所需的代码以使用 import(),或从 D:\myTestProject\node_modules\swagger 中删除“type”: "module" -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”
  2. npm install esm --save //这也不起作用

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

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

npm install [email protected]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章