为什么我只需要一个视图引擎(jade/pug)就可以使用res.json();
我的服务器上的所有控制器都得到MongoDB的数据并将其发送回角为JSON格式使用res.json(result);
为什么我只需要一个视图引擎(jade/pug)就可以使用res.json();
我需要哈巴狗或翡翠等..只是送一个json结果?
如果我没有玉,我得到这个错误:
Error: No default engine was specified and no extension was provided.
如果我安装玉,然后我得到这个错误:
Failed to lookup view "error" in views directory "G:\Dropbox\ThaiHome\Github\server\views"
(我没有\意见\文件夹在服务器上,我需要创建发送json吗?)
是否有一个基本的简单方法来设置我的nodejs服务器来解析json到角?
(我已经尝试过,没有运气以下)
// view engine setup
// app.use(express.static(__dirname + ''));
// app.engine('html', require('ejs').renderFile);
// app.set('view engine', 'html');
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'jade');
// app.set('view engine', 'html');
// app.set('view engine', 'json');
这里是app.js文件
https://www.dropbox.com/s/7ajp2p0qor74z6o/app.js?dl=0
,这里是我的文件夹结构
如果您只是呈现HTML,并且您没有 server
任何地方,则不需要使用任何视图引擎。
只需使用静态中间件而不是任何视图引擎。
app.use(express.static(__dirname + '/public'));
我希望所有的静态HTML文件都在public
文件夹中。
注意:如果您使用此功能,则您的代码中的任何位置都不得有res.render
。因为,res.render
需要一个视图引擎,它会抛出一个错误,说没有默认引擎指定,如果你没有。
不要忘了检查你的app.js
以及。默认情况下,快速应用错误处理程序使用res.render
来呈现错误。
我没有静态HTML文件来从我的节点控制器提供服务。他们所做的就是向调用者提供JSON数据(角度)。但!!出于某种原因,它想要...或者它不会让我抛出错误或有错误。如果我把'app.set('view engine','html')'I get'找不到模块'html',我所需要的就是'没有指定默认引擎并且没有提供扩展'在控制台中有一个很好的错误信息,以防出现错误或发生错误。 – torbenrudgaard
拉维有办法做到这一点,或者我将不得不安装玉/帕格或ejs或巩固和胡须等....或者我必须公开创建一个HTML文件来显示错误或? – torbenrudgaard
你能显示你的项目目录结构吗?另外,试着将所有的html文件保存在公共文件夹中,看看它是否有效。另外,你可以显示你的'app.js'吗?是的!你可以做到这一点没有任何视图引擎 –
确保你的应用程序不是试图渲染一些玉器。 例如像在app.js文件:
app.use((err, req, res, next) => {
res.status(err.status || 500);
res.render('error', {
user: {},
message: err.message,
error: {}
});
});
的res.render将尝试呈现在视图文件夹中的文件error.jade。
我到处检查 - 我没有在任何地方使用res.render。我唯一使用的是res.json。那也是玉的一部分吗? – torbenrudgaard
@torbenrudgaard错误是由[错误处理程序](http://expressjs.com/en/guide/error-handling.html)引起的。也许你正在使用应该处理错误的中间件,这取决于模板? – robertklep
你还在面对这个问题吗? –