node.js新手,想用ejs,不用jade,但改了之后会报错
发布于 8 年前 作者 AimeeLinzhiyu 4898 次浏览 来自 问答

想用ejs,不用jade,有什么办法改变一下,本来想把app.js 里的app.set(‘view engine’,‘jade’); 改成 app.set(‘view engine’,‘html’); 然后 Views里的index.jade改成index.html,但是浏览器访问的时候会报错:500 Error: Cannot find module ‘html’ ,有没有大神帮忙解决啊

9 回复

不是用ejs吗,模板引擎应该设为ejs啊

@zhangjh 设为ejs后,div样式没有了啊,就是把里面原来的jade 改成 app.set(‘view engine’,‘ejs’);

app.set(‘view engine’,‘html’); 最简单的理解:只是设置默认的模板文件扩展名而已 就是你在res.render(‘index’)时,会默认加上index.html,但是并没有html引擎,所以会报错 这也就是说你可以同时使用多个模板引擎 res.render(‘index’) res.render(‘index.ejs’) res.render(‘index.jade’)

@AimeeLinzhiyu 样式没有,那就说明style文件没有引入,可能你需要ejs partial渲染一类的,把js和style提出来作为layout。当然layout不用,每个页面引入也可以,稍微代码多点,修改麻烦

1:两个模板语法不一样,模板也要改 2:app.set(‘view engine’ ‘ejs’) 3:样式没有可能就是载入样式文件错误,在chrome网络面板看看就知道 4:ejs写多后想吐,建议使用hbs

@huangyanxiong01 chrome网络面板? 怎么看? 还有就是连接mondodb的时候会报错 : cannot find module"connect-mongo" ,是怎么回事?

使用ejs渲染就应该用用.ejs的文件.不该再用html的,如果你html是用ejs书写,可以在设置完模版引擎app.set(“view engine”,“ejs”)后使用res.render(“index”)或res.render(“index.ejs”);

同新手我也在学这个,昨天刚写完一个.https://github.com/y13568540740/photo

再加一句app.engine('.html', require('ejs').__express);https://cnodejs.org/topic/530318fa5366a72a2c070a5d应该属于同类问题。

回到顶部