大多数中间件(如压缩)不再与Express捆绑在一起

Most middleware (like compress) is no longer bundled with Express

本文关键字:Express 在一起 不再 中间件 压缩 大多数      更新时间:2023-09-26

我刚刚安装sails@v0.9.16,express@4.0.0,compression@1.0.1和compress@0.1.9(只是为了确保)。但我在运行sails lift 时仍有以下错误

/Users/myuser/myproject/backend/node_modules/express/lib/express.js:89
      throw new Error('Most middleware (like ' + name + ') is no longer bundle
            ^
Error: Most middleware (like compress) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
    at Function.Object.defineProperty.get (/Users/myuser/myproject/backend/node_modules/express/lib/express.js:89:13)
    at Object.module.exports.express.customMiddleware (/Users/myuser/myproject/backend/config/passport.js:127:20)
    at Array.loadExpress [as 1] (/usr/local/lib/node_modules/sails/lib/express/index.js:162:25)
    at listener (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:462:46)
    at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:416:17
    at Array.forEach (native)
    at _each (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:32:24)
    at Object.taskComplete (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:415:13)
    at processImmediate [as _immediateCallback] (timers.js:330:15)

知道为什么吗?

Sails不正式支持Express 4;Sails package.json中的Express依赖项设置为显式版本是有原因的!你可以使用这里的其他答案来尝试运行你的Sails应用程序,但在我们更新核心以使用新的Express之前,你只能靠自己了。

我们计划联系Express团队,尝试在未来更好地同步发布,但目前我们正在努力获得Sails v0.10的稳定发布!

仅仅在express 4.0中安装这些依赖项是不够的。

您现在需要将它们包含在带有的应用程序中

var compression = require('compression');

然后使用它。

这里有一篇相当不错的文章:链接
还有这里:链接

关于如何处理从express 3.x.x迁移到4.x.x

Express 4.0的中间件文档中说,

从4.x起,Express不再依赖Connect。Express以前包含的所有中间件现在都在单独的回购中。请查看中间件列表。现在唯一包含的中间件是express.static().

因此,您必须在package.json中明确地包含所有需要的中间件,作为依赖项。请参阅引用文本中的链接,了解所有中间件的存储库信息。

https://github.com/expressjs/body-parser/issues/31将您的bodyParser()更改为app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true }))也许你会得到正确的答案。由于express版本3到4,body解析器不在express中,您应该独立安装它。可能会帮助你。