【发布时间】:2017-10-27 03:22:55
【问题描述】:
我正在尝试使用带有 express 和 pug 模板的 NodeJS 创建一个网站。
我使用 express 文档集成了 Pug,但在渲染功能上我不断收到TypeError: View is not a constructor。我真的看过,但唯一有这个问题的人用其他模板得到了它,并且没有这样做很简单。
所以最后我这样做了:
var express = require('express');
var server = express();
server.set('views', './views');
server.set('view engine', 'pug');
server.get('/', (req, res) => {
res.render('example', {title: "code", message: "message"});
});
require('./settings')(server); console.log('Settings initialized');
server.listen(server.settings.port);
console.log('Server listening on port', server.settings.port);
在视图/模板中看起来像:
html
head
title = title
body
h1 = message
在 package.json 中,我将其导入为:"pug": "^2.0.0-rc.1"
感谢您的提示!祝你有美好的一天。
-- 编辑-- 所以我通过卸载哈巴狗做了一个小实验......我有相同的结果,所以我想我没有安装或参数化好哈巴狗。 - 编辑 - 做了一些其他的测试,结果证明没有要求它运行良好。但我不明白为什么,我需要导入外部文件。
【问题讨论】:
-
对于初学者,您应该删除
title和等号(标题相同)之间的空格 - 所以title=,而不是title =。这很可能无法解决您面临的问题,但是由于中间有空格,代码无法按照您期望的方式工作(它将= title作为页面标题,而不是title变量的实际值)。 -
谢谢@gandreadis,我更正了。
-
此错误是由您未在此处粘贴的代码/配置引起的,因为它将由名为 View 或 view 的变量/设置引发。您应该使用
express --view=pug卸载并重新安装,并考虑删除或编辑此问题。 -
您是否尝试将
require('./settings')(server);移到顶部?还可以为 require 使用另一种语法,例如const settings = require('./settings');?