Node.js node js app.use抛出一个中间件函数

Node.js node js app.use抛出一个中间件函数,node.js,express,Node.js,Express,我是node.js新手,我正在关注博客并练习如何创建新博客 在这一步之前,一切都很好,“Edge Template Engine With Express”,我添加了以下几行 app.use(expressEdge); app.set('views','u dirname+'/views'); 我得到下面的错误 C:\Automation\NodeJS\u Projects-master\NodeJS blog tutorial\node\u modules\express\lib\appl

我是node.js新手,我正在关注博客并练习如何创建新博客

在这一步之前,一切都很好,“Edge Template Engine With Express”,我添加了以下几行

app.use(expressEdge);
app.set('views','u dirname+'/views');
我得到下面的错误


C:\Automation\NodeJS\u Projects-master\NodeJS blog tutorial\node\u modules\express\lib\application.js:210 抛出新的TypeError('app.use()需要一个中间件函数') ^

TypeError:app.use()需要一个中间件函数
在Function.use(C:\Automation\NodeJS\u Projects-master\NodeJS blog tutorial\node\u modules\express\lib\application.js:210:11)
反对。(C:\Automation\NodeJS\u Projects-master\NodeJS博客教程\index.js:8:5) at模块编译(内部/modules/cjs/loader.js:1138:30) at Object.Module._extensions..js(internal/modules/cjs/loader.js:1158:10) 在Module.load(内部/modules/cjs/loader.js:986:32) at Function.Module._load(内部/modules/cjs/loader.js:879:14) 在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:71:12) 在internal/main/run_main_module.js:17:47

完整的代码已尝试删除
const express=require('express');
var slash=要求(“斜线”);
const expressEdge=require('express-edge');
const app=new express();
var dirname=uu dirname;
if(process.platform==='win32')dirname=slash(dirname);
应用程序使用(express.static('public'));
应用程序使用(expressEdge);
app.set('views',dirname+/views');
猫鼬mongodb://localhost:27017/node-blog',{useNewUrlParser:true})
.然后(()=>“您现在已连接到Mongo!”)
.catch(err=>console.error('Something出错',err))
app.get('/posts/new',(req,res)=>{
res.render('create')
});
应用程序获取(“/”,(请求,请求)=>{
res.render(“索引”);
});
app.get('/about',(req,res)=>{
全局。uu base=dirname+'/pages/about.html';
console.log(全局.\uuuu基)
res.sendFile(全局库);
});
app.get('/contact',(请求、回复)=>{
全局.uu base=dirname+'/pages/contact.html';
res.sendFile(全局库);
});
app.get('/post',(请求,res)=>{
全局.uu base=dirname+'/pages/post.html';
res.sendFile(全局库);
});
app.listen(4000,()=>{
console.log('端口4000上的应用程序侦听')
});

本教程可能已经过时,因为它们似乎使用了较旧版本的
express edge
,因为您应该按如下方式设置
express edge
(有关更多详细信息,请参阅):

或者,您可以执行以下操作:

const expressEdge = require('express-edge');
...
app.use(expressEdge.engine);

如果查看,您可以看到模块导出一个对象(包含
config
engine
)而没有中间件,因此出现了错误。

我正在windows环境中尝试上述代码,错误消息是什么?C:\Automation\NodeJS\u Projects-master\NodeJS blog tutorial\node\u modules\express\lib\application.js:210抛出新的TypeError('app.use()需要中间件函数')^TypeError:app.use()需要位于function.use的中间件函数(C:\Automation\NodeJS_Projects-master\NodeJS blog tutorial\node_modules\express\lib\application.js:210:11)at对象。(C:\Automation\NodeJS_Projects-master\NodeJS blog tutorial\index.js:8:5)at模块。\编译(internal/modules/cjs/loader.js:1138:30){“名称”:“NodeJS blog tutorial”,“版本”:“1.0.0”,“说明”:“使用node.js”、“main”:“index.js”、“scripts”:{“test”:“echo”:“Error:未指定测试”&&exit 1},“关键字”:[“blog”]、“author”:“license”:“ISC”、“dependencies”:“{“express”:“^4.17.1”、“express edge”:“^2.0.2”、“mongoose”:“^5.9.23”、“nodemon”:“^2.0.4”、“斜线”:“^3.0.0”“,“startbootstrap clean blog”:“^5.0.9”}}非常感谢您指出正确的错误并指出解决方案(很乐意帮助:)如果问题解决了,请接受答案,谢谢。@MageshBalasubramaniam或者您可以修改现有代码并执行
app.use(expressEdge.engine)
const expressEdge = require('express-edge');
...
app.use(expressEdge.engine);