Node.js 如何在express 4中禁用jade/模板引擎
我对express是新手,我想探索express的工作原理 我正在使用最新版本的Node.js 如何在express 4中禁用jade/模板引擎,node.js,express-4,Node.js,Express 4,我对express是新手,我想探索express的工作原理 我正在使用最新版本的express 4(4.8.1) 我不想使用任何模板引擎。我想手动提供我的HTML内容 我该怎么做? 我在这里搜索了几个问题是StackOverflow,我找到了一个解决方案。 我所要做的就是把下面几行注释掉 // view engine setup //app.set('views', path.join(__dirname, 'views')); //app.set('view engine', 'jade');
express 4(4.8.1)
我不想使用任何模板引擎。我想手动提供我的HTML内容
我该怎么做?
我在这里搜索了几个问题是StackOverflow,我找到了一个解决方案。
我所要做的就是把下面几行注释掉
// view engine setup
//app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
但是当我这样做的时候,当我从浏览器点击我的服务器时,我得到了以下错误
Error: No default engine was specified and no extension was provided.
at new View (/Users/adi/Desktop/srserver/node_modules/express/lib/view.js:41:42)
at Function.app.render (/Users/adi/Desktop/srserver/node_modules/express/lib/application.js:499:12)
at ServerResponse.res.render (/Users/adi/Desktop/srserver/node_modules/express/lib/response.js:955:7)
at module.exports (/Users/adi/Desktop/srserver/app.js:50:9)
at Layer.handle_error (/Users/adi/Desktop/srserver/node_modules/express/lib/router/layer.js:52:5)
at trim_prefix (/Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:261:13)
at /Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:230:9
at Function.proto.process_params (/Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:305:12)
at /Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:221:12
at Function.match_layer (/Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:288:3)
这是完整的代码。(app.js)
另外,我从package.json中删除了jade
,您有两个选择:
使用模板引擎Jade、ejs等。。
并使用res.render表示渲染模板
只使用静态文件和api调用,而不只是调用api,并使用从服务器返回的json在客户端呈现视图。
res.send({users:[{id:1,name'adi'},{id:2,name'dave']})
如果您试图将express用于Apache或nginx之类的东西,我认为您应该使用以下命令直接发送html文件
res.sendFile('path/toFile')
您还可以查看,以了解有关该方法的详细信息
这还提到了一些替代方案,如让express作为静态文件提供html。注释此代码是正确的:
// view engine setup
//app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
出现此错误的原因是./public目录中没有提供文件扩展名为的文件。错误的第二部分是:
没有提供延期
express 4服务器到服务器静态html文件所需的唯一代码如下:
app.use(express.static(path.join(__dirname, 'public')));
它告诉您的express服务器在./public目录中查找静态文件
如果添加./public/index.html,则可以将其作为静态文件使用
希望这有帮助以上答案中缺少一点
对render
呼叫表示不满,因此您需要做的只是:
按正确的方式对视图进行注释(也如前所述)
替换所有render
调用:
从
到
我知道这是个老问题,但我犯了一些错误
您需要更改@Kfir errez所说的内容,并更改routes/index.js中的响应:
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
例如:
router.get('/', function(req, res, next) {
res.send('index');
});
此处回答了此问题的可能重复:
res.status(500).json({
message: err.message,
error: err
});
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/', function(req, res, next) {
res.send('index');
});