找不到模块'swagger_params_parser'

时间:2018-05-22 12:32:38

标签: node.js npm swagger swagger-node-runner

我有一个使用Swagger

创建的Swagger NodeJS项目

Swagger使用swagger-connect 0.1.0开箱即用,但我现在使用manual instructions升级到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”中存在,但在本地它可以工作!?

1 个答案:

答案 0 :(得分:0)

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

我从中学到了两件事:

1。)如果node_modules存在,则使用node_module_production代替node_modules。我的RPM没有覆盖目录,因此留下了node_modules的旧副本,该副本在某些时候被错误打包。招摇的应用程序正在加载来自node_modules_production而不是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

的模块

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

swagger-connect

具有误导性,因为该模块永远不会出现,至少在python3 -m pip install ipykernel python3 -m ipykernel install --user 的0.7.0版