【已解决】Nodejs中express用jade实现hello world但是遇到点问题
【已解决】Nodejs中express用jade实现hello world但是遇到点问题
大家好,我在用express和jade做一个hello world 但是遇到点问题 不知道怎么错的。 我的jade,都是用的tab键来空格。我不知道问题出在哪里
控制台输出: listening on port 3000 访问页面后 输出: Error: No default engine was specified and no extension was provided. at new View (e:\hellword\node_modules\express\lib\view.js:41:42) at Function.app.render (e:\hellword\node_modules\express\lib\application.js:509:12) at ServerResponse.res.render (e:\hellword\node_modules\express\lib\response.js:900:7) at e:\hellword\app.js:7:6 at Layer.handle [as handle_request] (e:\hellword\node_modules\express\lib\router\layer.js:82:5) at next (e:\hellword\node_modules\express\lib\router\route.js:100:13) at Route.dispatch (e:\hellword\node_modules\express\lib\router\route.js:81:3) at Layer.handle [as handle_request] (e:\hellword\node_modules\express\lib\router\layer.js:82:5) at proto.handle.c (e:\hellword\node_modules\express\lib\router\index.js:234:24) at Function.proto.process_params (e:\hellword\node_modules\express\lib\router\index.js:312:12)
我的目录结构和package.json
【已解决】Nodejs中express用jade实现hello world但是遇到点问题
大家好,我在尝试使用Express和Jade模板引擎实现一个简单的“Hello World”应用时遇到了一些问题。具体来说,我想要通过Jade渲染一个简单的HTML页面,并显示“Hello World”。
问题描述
当我运行应用并访问页面时,控制台输出了一些错误信息。看起来是没有正确指定默认的模板引擎或没有提供文件扩展名。
控制台输出
listening on port 3000
访问页面后 输出:
Error: No default engine was specified and no extension was provided.
at new View (e:\hellword\node_modules\express\lib\view.js:41:42)
at Function.app.render (e:\hellword\node_modules\express\lib\application.js:509:12)
at ServerResponse.res.render (e:\hellword\node_modules\express\lib\response.js:900:7)
at e:\hellword\app.js:7:6
at Layer.handle [as handle_request] (e:\hellword\node_modules\express\lib\router\layer.js:82:5)
...
目录结构和package.json
我的项目目录结构如下:
/hellword
/views
index.jade
app.js
package.json
package.json
文件内容如下:
{
"name": "hellword",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.17.1",
"jade": "^1.11.0"
}
}
解决方案
在Express 4.x版本中,默认不再内置对Jade的支持。你需要手动安装pug
(Jade的继任者)作为模板引擎。以下是修改后的代码示例:
-
安装
pug
模板引擎:npm install pug --save
-
修改
app.js
文件,确保指定了正确的模板引擎:var express = require('express'); var app = express(); // 设置模板引擎为pug app.set('view engine', 'pug'); // 设置视图文件夹 app.set('views', './views'); // 路由处理 app.get('/', function(req, res) { res.render('index', { title: 'Hello World' }); }); // 启动服务器 app.listen(3000, function () { console.log('App listening on port 3000!'); });
-
在
views/index.pug
文件中编写以下内容:doctype html html head title= title body h1 Hello World!
这样设置后,当你访问页面时,应该会看到“Hello World!”的输出,并且不会再有之前的错误。
希望这个解决方案对你有所帮助!
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');****
谢谢
根据你的描述,错误信息表明没有指定默认的渲染引擎,并且也没有提供文件扩展名。这是因为从 Express 4.x 版本开始,Express 默认不再包含模板引擎。你需要手动安装并配置模板引擎。
假设你使用的是 Jade(现称为 Pug),你需要先确保已经安装了 pug
模板引擎。可以使用以下命令安装:
npm install pug --save
然后,在你的应用初始化代码中设置视图引擎为 Pug,例如在 app.js
中添加如下代码:
const express = require('express');
const path = require('path');
const app = express();
// 设置模板引擎为 Pug
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.get('/', function(req, res) {
res.render('index', { title: 'Hello World' });
});
app.listen(3000, () => {
console.log('Listening on port 3000');
});
创建一个名为 views/index.pug
的文件,内容如下:
doctype html
html(lang='en')
head
title= title
body
h1 Hello World!
这样配置之后,再次运行你的应用,访问首页应该就能看到 “Hello World!” 的输出了。
通过这些步骤,你应该能够解决你遇到的问题。如果还有其他错误,请检查你的路径设置以及文件命名是否正确。