【发布时间】:2018-01-13 21:34:25
【问题描述】:
我的应用只能在 3000 端口上运行。
如果我将端口更改为其他任何东西,它会起作用,但是当页面加载时会出现此错误。
abc 未定义 在 eval (编译时的 eval (C:\Users\ASUS\node_modules\ejs\lib\ejs.js:549:12), :22:26) 在返回Fn (C:\Users\ASUS\node_modules\ejs\lib\ejs.js:580:17) 在 tryHandleCache (C:\Users\ASUS\node_modules\ejs\lib\ejs.js:223:34) 在 View.exports.renderFile [作为引擎] (C:\Users\ASUS\node_modules\ejs\lib\ejs.js:437:10) 在 View.render (C:\Users\ASUS\node_modules\express\lib\view.js:128:8) 在 tryRender (C:\Users\ASUS\node_modules\express\lib\application.js:640:10) 在 EventEmitter.render (C:\Users\ASUS\node_modules\express\lib\application.js:592:3) 在 ServerResponse.render (C:\Users\ASUS\node_modules\express\lib\response.js:971:7) 在 C:\Users\ASUS\Desktop\nodeweb\controllers\index.js:21:6 在 Layer.handle [as handle_request] (C:\Users\ASUS\node_modules\express\lib\router\layer.js:95:5)
abc 是我在 index.ejs 中使用的变量,在路由器中定义。
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.render('index', {abc: 23})
});
module.exports = router;
我正在使用 node app 命令启动我的服务器
var app = express();
app.set('view engine', 'ejs')
app.use(express.static(__dirname + '/public'));
app.use(require('./controllers'))
app.listen(8080, function() {
console.log('Listening on port 8080...')
})
更新
我想我找到了问题 当我使用它时它可以工作
app.use('/', function(req, res) {
res.render('index', {tit:[1,2,3,4,5]});
})
而不是
app.use(require('./controllers'))
但是为什么呢?
更新
它自己修复了,现在可以正常工作了,我不知道为什么。太烂了。
【问题讨论】:
-
不看
controllers很难说哪里错了 -
@ManasJayanth 我已经用 controllers/index.js 更新了帖子
-
我认为这是一个 ejs 错误。与哈巴狗一起工作,但我找不到记事本++的哈巴狗/玉语法荧光笔,所以我不认为我可以使用它,是否有一个很好的模板引擎,具有类似 django 的语法? swig 看起来很棒,但没有维护。
-
您发布的代码没有问题。刚刚在我的系统上运行良好。
-
也没有发现
ejs有什么问题。