繁体   English   中英

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'

这不是重复的,我已经研究并检查了其他堆栈溢出链接,例如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]: Must use import to load ES Module: D:\myTestProject\node_modules\swagger-jsdoc\index.js 不支持 ES 模块的 require()。 来自 D:\myTestProject\index.js 的 D:\myTestProject\node_modules\swagger-jsdoc\index.js 的 require() 是一个 ES 模块文件,因为它是一个 .js 文件,其最近的父 package.json 包含“类型”: “模块”将 package scope 中的 all.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 降级到使用CommonJS工具构建的 6.1.0,起初我使用的是不是使用CommonJS工具构建的 swagger-jsdoc 7.x 来降级 swagger-jsdoc 使用 npm 的以下命令

npm install swagger-jsdoc@6.0.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM