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'
这不是重复的我已经研究并检查了其他堆栈溢出链接,例如 this, and
我像这样在现有 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);
^
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module:
D:\myTestProject\node_modules\swagger-jsdoc\index.js require() of ES
modules is not supported. require() of
D:\myTestProject\node_modules\swagger-jsdoc\index.js from
D:\myTestProject\index.js is an ES module file as it is a .js file
whose nearest parent package.json contains "type": "module" which
defines all .js files in that package scope as ES modules. Instead
rename D:\myTestProject\node_modules\swagger-jsdoc\index.js to end in
.cjs, change the requiring code to use import(), or remove "type":
"module" from
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' }
我已经尝试了以下步骤,但它们没有用
- 在节点启动脚本中添加了标志“--experimental-modules”
npm install esm --save
//这也不起作用
但现在我终于找到了一个解决方案,它不需要您将 .js 文件重命名为 .mjs,如果您已经是 运行 Node.Js 版本,它也不需要升级您的节点12岁或以上
只需将您的 swagger-jsdoc 降级到 6.1.0,它是使用 CommonJS 工具构建的,起初我使用的是未构建的 swagger-jsdoc 7.x使用 CommonJS 工具降级 swagger-jsdoc 使用 npm
的以下命令
npm install swagger-jsdoc@6.0.1
这不是重复的我已经研究并检查了其他堆栈溢出链接,例如 this,
我像这样在现有 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); ^
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: D:\myTestProject\node_modules\swagger-jsdoc\index.js require() of ES modules is not supported. require() of D:\myTestProject\node_modules\swagger-jsdoc\index.js from D:\myTestProject\index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules. Instead rename D:\myTestProject\node_modules\swagger-jsdoc\index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from 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' }
我已经尝试了以下步骤,但它们没有用
- 在节点启动脚本中添加了标志“--experimental-modules”
npm install esm --save
//这也不起作用
但现在我终于找到了一个解决方案,它不需要您将 .js 文件重命名为 .mjs,如果您已经是 运行 Node.Js 版本,它也不需要升级您的节点12岁或以上
只需将您的 swagger-jsdoc 降级到 6.1.0,它是使用 CommonJS 工具构建的,起初我使用的是未构建的 swagger-jsdoc 7.x使用 CommonJS 工具降级 swagger-jsdoc 使用 npm
的以下命令npm install swagger-jsdoc@6.0.1