首页 > 解决方案 > 找不到模块'swagger_params_parser'

问题描述

我有一个使用Swagger创建的 Swagger NodeJS 项目

Swagger 使用 swagger-connect 0.1.0 开箱即用,但我现在使用手动说明升级到 swagger-connect 0.7.0 ,其中包括将以下内容添加到 config/default.yml:

_swagger_params_parser:                    # <= Add this definition
  name: swagger_params_parser
  jsonOptions: {}
  urlencodedOptions:
    extended: false
  multerOptions:
    inMemory: true
  textOptions:
    type: "*/*"

在“swagger_controllers:”部分下,我添加了:

 - swagger_params_parser 

这在我的本地机器上运行良好,但是当我推送到服务器时,它会抛出错误:

Error initializing middleware
May 22 13:25:27 myserver "myapp": Error: Cannot find module '/var/www/myapp/node_modules/swagger-connect/node_modules/swagger-node-runner/node_modules/bagpipes/lib/fittings/swagger_params_parser'

我通过以下方式启动服务器:

node app.js

所以它看起来像是我的本地机器上的潜在依赖流血,但我已经销毁 (rm -Rf) 'node_modules' 并重新运行npm install,它在我的本地机器上仍然可以正常工作,但在服务器上中断。

为什么缺少 swagger-params-parser 的任何想法?

另外,另一个奇怪的事情是 swagger-params-parser在目录''中本地/var/www/myapp/node_modules/swagger-connect/node_modules/swagger-node-runner/node_modules/bagpipes/lib/fittings/swagger_params_parser存在,但在本地它可以工作!?

标签: node.jsnpmswaggerswagger-node-runner

解决方案


问题原来是node_modules服务器上的一个杂散目录(我们通常使用node_modules_production)。

我从中学到了两件事:

1.)node_modules用于代替node_module_production它是否存在。我的 RPM 没有覆盖目录,因此留下了一个旧副本,node_modules在某些时候被错误地打包了。swagger 应用程序正在加载模块,node_modules而不是node_modules_production

2.) swagger_params_parser 确实丢失了,即使在代码的工作版本上也是如此,所以它看起来像这个错误:

Error initializing middleware
May 22 13:25:27 myserver "myapp": Error: Cannot find module '/var/www/myapp/node_modules/swagger-connect/node_modules/swagger-node-runner/node_modules/bagpipes/lib/fittings/swagger_params_parser

具有误导性,因为该模块从不存在,至少在 0.7.0 版本中swagger-connect


推荐阅读