node.js - 我想升级 Node 环回应用程序中的所有 npm 包

标签 node.js swagger-ui strongloop loopback

我有一个 Node 应用程序,安装了与 Node 版本 0.10.25 兼容的所有 Node 软件包,

但现在我必须升级与当前 Node 版本兼容的所有软件包,即 Node 版本 10.15.3

到目前为止我已经尝试了两种方法,即

1.) npm 升级 --save

2.)硬编码包更新版本到package.json文件中,然后运行。

npm install --save

但我最终遇到了类似的错误

Error: Cannot resolve path "loopback/server/middleware/compress"

发生上述错误后我尝试了

npm install compress --save

之后也出现同样的错误。

我以前的 package.json 文件看起来像

...
  "dependencies": {
    "compression": "^1.0.3",
    "ejs": "^1.0.0",
    "email-templates": "^1.2.1",
    "errorhandler": "^1.1.1",
    "loopback": "^2.8.0",
    "loopback-boot": "^2.4.0",
    "loopback-component-storage": "^1.5.0",
    "loopback-connector-mysql": "^2.1.1",
    "loopback-datasource-juggler": "^2.7.0",
    "mysql": "^2.17.1",
    "nodemailer": "^1.3.4",
    "nodemailer-smtp-transport": "^1.0.3",
    "q": "^1.4.1",
    "request": "^2.88.0",
    "serve-favicon": "^2.0.1",
    "strongloop": "^6.0.3"
  },
  "optionalDependencies": {
    "loopback-explorer": "^1.1.0"
  },
  "devDependencies": {
    "jshint": "^2.5.6"
  },
... 

我当前的 package.json 文件如下所示(手动查找 https://www.npmjs.com/package/ 中所有软件包的更新版本)

 ...
  "dependencies": {
    "compression": "^1.7.4",
    "ejs": "^2.6.1",
    "email-templates": "^5.0.4",
    "errorhandler": "^1.5.1",
    "loopback": "^3.25.1",
    "loopback-boot": "^2.28.0",
    "loopback-component-storage": "^3.6.0",
    "loopback-connector-mysql": "^5.3.1",
    "loopback-datasource-juggler": "^4.6.2",
    "mysql": "^2.17.1",
    "nodemailer": "^6.1.0",
    "nodemailer-smtp-transport": "^2.7.4",
    "nodemon": "^1.19.1",
    "q": "^1.5.1",
    "request": "^2.88.0",
    "serve-favicon": "^2.5.0",
    "strongloop": "^6.0.3"
  },
  "optionalDependencies": {
    "loopback-component-explorer": "^6.4.0"
  },
  "devDependencies": {
    "jshint": "^2.10.2"
  },
  "repository": {
    "type": "",
    "url": ""
  },
  "description": "orders"
}
...

我必须扩展满足业务逻辑的应用程序,为此我需要安装很多新软件包,但与我当前的软件包不可用/兼容,

任何这样做的引用或建议都会对我非常有帮助。

提前致谢

最佳答案

由于您要将许多依赖项升级到更高的 semver-major 版本,因此您需要处理这些版本中引入的重大更改。

LoopBack为开发者从2.x升级到3.x提供了迁移指南,参见https://loopback.io/doc/en/lb3/Migrating-to-3.0.html .

Error: Cannot resolve path "loopback/server/middleware/compress"

LoopBack 3.x 将 Express 从 2.x 升级到 3.x (IIRC),因此不再捆绑流行的中间件 - 应用程序必须显式安装和加载它们。

我发现您的依赖项中已经列出了compression,因此现在您需要更改调用require('loopback/server/middleware/compress')的代码改为调用 require(compression') 。另请检查您的 server/middleware.json 文件,LoopBack 应用程序通常通过该配置文件配置中间件。

"loopback-datasource-juggler": "^4.6.2",

在 LoopBack 3.0 中,我们将 loopback-datasource-jugglerpeerDependencies 移至常规 dependency,LoopBack 应用程序不再直接依赖 juggler 。请从您的 package.json 中删除此条目。

参见https://loopback.io/doc/en/lb3/Migrating-to-3.0.html#edit-packagejsonhttps://loopback.io/doc/en/lb3/3.0-Release-Notes.html#loopback-datasource-juggler-is-now-a-regular-dependency-of-loopback

关于node.js - 我想升级 Node 环回应用程序中的所有 npm 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56323038/

相关文章:

node.js - 如何在 Loopback 中使用访问 token ?

node.js - 如何调试 Heroku 上环回应用程序的内存泄漏?

node.js - 在 Sequelize 中更改 createdAt 的值?

javascript - 如何在 twilio 中更好地控制出站消息?

swagger-ui - 在 OpenAPI 3.0 中引用 self

swagger - 生成 REST API 文档的步骤

node.js - 环回:如何通过 REST 更新多个对象?

node.js - 为什么我不应该在生产模式下使用 dotenv?

node.js - NodeJS 异步函数创建页面加载器

express - 如何使用 Swagger Express 在我的 Swagger UI 中添加数组和示例?