node.js - 如何修复中间件功能错误app.use
问题描述
我已经安装了 Express、Nodeman、Express-Edge。我使用的是 Windows 10。有人告诉我有类似问题,他需要安装他指定的库。就像我说的我已经安装了它。
在index.js
代码中;
const path = require('path');
const expressEdge = require('express-edge');
const express = require('express');
const app = new express();
app.use(express.static('public'));
app.use(expressEdge);
app.set('views', __dirname + '/views');
app.get('/', (req, res) => {
res.render('index');
});
app.get('/about', (req, res) => {
res.sendFile(path.resolve(__dirname, 'pages/about.html'));
});
app.get('/contact', (req, res) => {
res.sendFile(path.resolve(__dirname, 'pages/contact.html'));
});
app.get('/post', (req, res) => {
res.sendFile(path.resolve(__dirname, 'pages/post.html'));
});
app.listen(4000, () => {
console.log('App listening on port 4000')
});
命令外壳说:
C:\Users\Maximus\WebstormProjects\untitled4\nodejs-blog-tutorial\node_modules\express\lib\application.js:210
throw new TypeError('app.use() requires a middleware function')
^
TypeError: app.use() requires a middleware function
at Function.use (C:\Users\Maximus\WebstormProjects\untitled4\nodejs-blog-tutorial\node_modules\express\lib\application.js:210:11)
at Object.<anonymous> (C:\Users\Maximus\WebstormProjects\untitled4\nodejs-blog-tutorial\index.js:8:5)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...
包.json
{
"name": "nodejs-blog-tutorial",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"keywords": [
"blog"
],
"description": "",
"dependencies": {
"express": "^4.17.1",
"express-edge": "^2.0.2",
"nodemon": "^2.0.4",
"startbootstrap-clean-blog": "^5.0.9"
}
}
解决方案
看来您没有使用 express-edge 库中的正确导出。根据文档,它应该是这样的:
const express = require('express');
const expressEdge = require('express-edge');
const app = new express();
app.use(expressEdge.engine);
或者,您可以这样做:
const express = require('express');
const { config, engine } = require('express-edge');
const app = new express();
app.use(engine);
这里的想法是expressEdge
导出一个具有两个属性的对象,config
并且engine
您必须访问这些属性才能正确使用该库。
推荐阅读
- python - 计算和更改被 1 包围的矩阵中的 0 - Python
- swift - Swift 5(PhysicsBody:无法创建物理体)
- uml - 如何在 UML 中建模协变关联类?
- ios - 错误:无法分配 UIImage 类型的值?到数据?
- tomcat - Grails 有时会呈现错误的字符编码
- elasticsearch - 有没有办法将弹性搜索字段类型从小写转换为标题大小写?
- visual-studio - 如何在 Visual Studio 2019 Windows Forms 项目中创建多个表单?
- reactjs - React Hook useEffect 缺少依赖项:'classes'(Material-ui 样式和 react-bootstrap-sweetalert)
- database - 如何在 VB.NET 中将记录保存到主从表中?
- python - 硒铬被检测到