【问题标题】:"Most middleware" issue with running node app.js from terminal从终端运行节点 app.js 的“大多数中间件”问题
【发布时间】:2021-04-25 10:21:37
【问题描述】:

我是 node.js 的新手,在添加一个名为 projects.js 的新文件后,我似乎无法运行我的 node app.js 文件,并且只有这个 JS 代码:

exports.viewProject = function(req, res){
  res.render("project");
};

这是我(没用的)教授的预编码项目,我收到了这个错误:

我有 Big Sur,卸载并重新安装了 node,尝试了 sudo,但它仍然无法正常工作。这也是我的 app.js 代码,我只添加了 var project 和 app.get('/project'... etc)。

对不起,如果这很长,我只是想在大流行期间完成在线课程。谢谢!

【问题讨论】:

  • 您是否安装了您的模块。在终端npm install的根目录下?
  • 看起来您正在使用非常旧的示例代码,用于旧版本的 express,您添加的几乎所有实用程序中间件现在都不包含在 express 中,您需要独立安装它(favicon,logger , session, methodOverride, cookieParser, session), app.router 也被弃用了
  • @Leslie 我向你的仓库创建了一个拉取请求,检查一下,我更新了 express 版本并修复了一些回归问题,现在应该可以使用 express 的最新稳定版本正常工作(移植了你对 app.js 有了新的东西)。
  • 如果拉取请求看起来足够有说服力,与当前的主分支合并,并使用npm i重新克隆和重新安装依赖项
  • @SebastiánEspinosa 听起来不错!我很快就会看看它,并且很可能会计划合并它。非常感谢!

标签: javascript html node.js express terminal


【解决方案1】:

Express 给你的警告告诉你你正在尝试使用aren't included in Express anymore 的内置中间件。当 Express 2.x 被弃用时,其中一些已被弃用9 年多。撰写本文时的当前版本是 4,版本 5 处于 alpha 阶段。

其中一些自 2012 年 (2.x) 以来未与 Express 捆绑,其中一些自 2015 年 (3.x) 以来:

  • express.favicon() - 由 express.static() 处理,只要您的 favicon.icopublic 目录内
  • express.logger() - 改用 morgan
  • express.methodOverride() - 改用 method-override 包,虽然你可能不需要这个
  • express.cookieParser() - 改用 cookie-parser
  • express.session() - 可能在 3.x 中变为 express.cookieSession(),在 3.x 后删除,使用 express-session 包或 cookie-session

正如 Sebastián 在 cmets 中提到的,app.use(app.router) 也是多余的。

此外,express3-handlebars 软件包也已被弃用,因为它适用于 Express 3(顾名思义)。如果你去它的NPM page,你会看到一个大横幅告诉你改用express-handlebars

您的package.json 文件还包含一个名为node 的包,根据其描述,该包可用于从具有特定节点版本的依赖项运行脚本。你也很可能根本不需要这个,并且可以使用 npm 卸载。

作为结束语,如果该项目的基础是由您的教育机构提供给您的,我建议向他们提供反馈并告诉他们是时候更新示例了。

【讨论】:

  • 非常感谢您的详细回复!经过一些研究,我确实认识到 Express 中间件不包括在内。我已经尝试安装 express-handlebars 并且收到此错误:“npm WARN saveError ENOENT: no such file or directory, open '/Users/leslie/IntroHCI/package.json'”。我完全同意教育反馈。
  • 该错误意味着您不在带有package.json 的目录中。也许您需要cd 到正确的子目录。
  • 我尝试将它安装到父文件夹中,但它仍然给出了同样的问题。我可以通过注释掉 app.js 中所有过时的中间件来解决这个问题!非常感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2018-02-07
相关资源
最近更新 更多