NodeJS express-openapi-validator/dist/resolvers.js:不支持ES模块的require()

stszievb  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(137)

我已经用openapi-express-server生成了一个服务器,但是我需要将它转换为ES6,因为我将使用一些不再支持CommonJS的库,所以我不能对它们使用require。我生成了一个基本服务器来测试重构,但我一直从resolver.js得到一个错误。我尝试过express-openapi-validator v3、v4和v5。
服务器正确加载,但当调用API时,我得到错误:

require() of ES Module /controllers/InfoController.js from /node_modules/express-openapi-validator/dist/resolvers.js not supported.\nInstead change the require of InfoController.js in /node_modules/express-openapi-validator/dist/resolvers.js to a dynamic import() which is available in all CommonJS modules."

这是给出错误的控制器,但如果使用所有其他控制器,也会抛出错误。该错误不会出现在服务器启动时,而是出现在对REST端点的第一次API调用时(在本例中为info/version

// InfoController.js
import Controller from './Controller.js';
import service from '../services/InfoService.js';

const version = async (request, response) => {
  await Controller.handleRequest(request, response, service.version);
};

export default {
  version,
};

似乎openapi-validator库中的resolver.js不喜欢es6模块。我能做些什么来解决这个问题?
使用openapi-express-server Generator生成服务器,并将文件转换为ES6标准。我希望API能够正常工作。

2nbm6dog

2nbm6dog1#

我也遇到了同样的问题。您可以通过定义自己的解析程序来解决此问题。您可以找到example here

相关问题