app.use()需要在express-edge中使用中间件功能

问题描述 投票:0回答:1

[我正在使用节点js创建博客,并遵循本教程https://vegibit.com/node-js-blog-tutorial/,但现在我卡住了,它使我在app.use('express-edge')上出错,这是我的代码

const path = require('path');
const expressEdge = require('express-edge');
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
 
const app = new express();
 
mongoose.connect('mongodb://localhost:27017/node-blog', {
        useNewUrlParser: true
    })
    .then(() => 'You are now connected to Mongo!')
    .catch(err => console.error('Something went wrong', err))
 
app.use(express.static('public'));
app.use(expressEdge);
app.set('views', __dirname + '/views');
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
    extended: true
}));
 
app.get('/', (req, res) => {
    res.render('index');
});
 
app.get('/posts/new', (req, res) => {
    res.render('create')
});
 
app.post('/posts/store', (req, res) => {
    console.log(req.body)
    res.redirect('/')
});
 
app.listen(4000, () => {
    console.log('App listening on port 4000')
});

我的错误看起来像[nodemon]开始node index.jsC:\ Users \ 91762 \ Desktop \ Blog \ node_modules \ express \ lib \ application.js:210抛出新的TypeError('app.use()需要中间件功能')^

TypeError:app.use()需要一个中间件功能在Function.use(C:\ Users \ 91762 \ Desktop \ Blog \ node_modules \ express \ lib \ application.js:210:11)在对象。 (C:\ Users \ 91762 \ Desktop \ Blog \ index.js:16:5)在Module._compile(内部/模块/cjs/loader.js:945:30)在Object.Module._extensions..js(internal / modules / cjs / loader.js:962:10)在Module.load(internal / modules / cjs / loader.js:798:32)在Function.Module._load(internal / modules / cjs / loader.js:711:12)在Function.Module.runMain(内部/模块/cjs/loader.js:1014:10)在internal / main / run_main_module.js:17:11[nodemon]应用程序崩溃-等待文件更改,然后再开始...

node.js express nodemon
1个回答
0
投票

也许该教程已经过时,express-edge的最新版本未将边缘引擎导出为默认导出,程序包将导出包含config, engine的对象。

如果您的节点版本支持对象解构,则可以遵循软件包文档。

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

或者,只需在代码中更改垃圾:

app.use(expressEdge.engine); // instead of app.use(expressEdge);
© www.soinside.com 2019 - 2024. All rights reserved.