Node.js Serverless集成openapi文档插件时路径参数类型错误求助
解决serverless-openapi-documentation插件生成文档时的ERR_INVALID_ARG_TYPE错误
问题场景
基于Node.js和Serverless框架开发的应用中,集成serverless-openapi-documentation插件并完成以下配置:
- 在
serverless.yml中声明插件、配置文档信息,同时引用了ErrorResponse、PutDocumentResponse等JSON模型 - 引入了外部函数配置文件
- 编写了
ErrorResponse.json和PutDocumentResponse.json模型文件
执行命令serverless openapi generate --output时触发如下错误:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received type boolean (true) at Object.openSync (fs.js:489:10) at Object.writeFileSync (fs.js:1528:35) at ServerlessOpenApiDocumentation.generate (D:\Reinvent\Web\thirdparty-api\node_modules\serverless-openapi-documentation\ServerlessOpenApiDocumentation.js:127:12) at PluginManager.runHooks (D:\Reinvent\Web\thirdparty-api\node_modules\serverless\lib\classes\plugin-manager.js:530:15) at PluginManager.invoke (D:\Reinvent\Web\thirdparty-api\node_modules\serverless\lib\classes\plugin-manager.js:564:20) at async PluginManager.run (D:\Reinvent\Web\thirdparty-api\node_modules\serverless\lib\classes\plugin-manager.js:604:7) at async Serverless.run (D:\Reinvent\Web\thirdparty-api\node_modules\serverless\lib\serverless.js:174:5) at async D:\Reinvent\Web\thirdparty-api\node_modules\serverless\scripts\serverless.js:771:9
错误原因
--output选项需要接收字符串类型的输出路径参数,仅输入--output会被解析为布尔值true,而插件内部调用fs.writeFileSync时要求传入有效路径,因此触发类型错误。
解决方案
方案1:执行命令时指定具体输出路径
在命令中给--output参数添加具体的文件路径,示例:
serverless openapi generate --output ./openapi.json
方案2:在serverless.yml中预先配置输出路径
在serverless.yml的custom.openapi配置块中添加output字段,指定路径后无需在命令中带参数:
custom: openapi: output: ./openapi.json # 保留你已有的其他openapi配置项 # 比如info、models等
之后直接执行简化命令即可:
serverless openapi generate
内容的提问来源于stack exchange,提问作者Chirag
相关产品推荐
相关产品推荐

