首页 文章

Express仅适用于端口3000

提问于
浏览
0

我的应用程序仅适用于端口3000 .

如果我将端口更改为其他任何东西,它将工作,但当页面加载时,它会发生此错误 .

abc未定义在eval(eval at compile(C:\ Users \ ASUS \ node_modules \ ejs \ lib \ ejs.js:549:12),:22:26)at returnedFn(C:\ Users \ ASUS \ node_modules) \ ejs \ lib \ ejs.js:580:17)在View.exports.renderFile [作为引擎]的tryHandleCache(C:\ Users \ ASUS \ node_modules \ ejs \ lib \ ejs.js:223:34)中(C:用户\ ASUS \ node_modules \ ejs \ lib \ ejs.js:437:10)在tryRender上的View.render(C:\ Users \ ASUS \ node_modules \ express \ lib \ view.js:128:8)(C: \ Users \ ASUS \ node_modules \ express \ lib \ application.js:640:10)在ServerResponse.render的EventEmitter.render(C:\ Users \ ASUS \ node_modules \ express \ lib \ application.js:592:3)处( 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:\用户\ ASUS \ node_modules \表达\ lib中\路由器\ 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'))

但为什么?

更新

它只是固定自己,它现在正常工作,我不知道为什么 . 太糟糕了 .

3 回答

  • 0

    您可以尝试对端口进行硬编码:app.set(“port”,process.env.PORT || 3000);

    或者:$ PORT = 8080节点app.js

    此外,如果您不在Windows上,并且想要使用1024以下的端口,请首先尝试:sudo PORT = 80 node app.js

  • 0

    如果要将路由处理程序放在单独的文件中,则可以,只需要使用 app.use(...) 调用该文件即可 .

    相反,你可以这样做:

    require('./controllers');
    

    它与 abc 变量无关 .

  • 0

    这是因为,我认为控制器没有正确导入 . 如果你这样写我认为,它会正常工作

    var router = require('express').Router();
    router.get('/', function(req, res) {
        res.render('index', {abc: 23})
    });
    module.exports = router;
    
    
    
    var app = express();
    var route = require('./router')
    app.set('view engine', 'ejs')
    app.use(express.static(__dirname + '/public'));
    
    app.use('/',route);
    
    app.listen(8080, function() {
      console.log('Listening on port 8080...')
    })
    

    var route = require('./router') 中定义 require('./router') 时要小心,因为它是相对的,所以它完全取决于你的文件夹结构 .

相关问题