【问题标题】:router.get('/') on expressjs not workingexpressjs上的router.get('/')不起作用
【发布时间】:2015-04-29 16:29:05
【问题描述】:

我无法通过“/”路由模式访问我的 express 应用程序的主页。它正在处理 /index 例如我的快速版本是 4.6。

我尝试了 app.use('/*', router),但我的应用程序没有响应或 503 服务暂时不可用。它现在通过 '/index' 模式工作,其他路由正常工作。只有“/”模式不起作用。 :)

这是我的代码 sn-p。

        var http = require('http');

        var express = require('express');
        var app = express();

        var router = express.Router();
        app.use('/', router);

        app.set('view engine', 'ejs');
        app.set('views', './views');
        app.use(express.static('./public'));

        var bodyParser = require("body-parser");
        app.use(bodyParser());

        var fs = require('fs');

        var clientSessions = require("client-sessions");

        var form = require('express-form');
        var field = form.field;

        var sha1 = require('sha1');

        var mysql = require('mysql');
        var connection = mysql.createConnection({
          host: process.env.OPENSHIFT_MYSQL_DB_HOST,
          port: process.env.OPENSHIFT_MYSQL_DB_PORT,
          user: process.env.OPENSHIFT_MYSQL_DB_USERNAME,
          password: process.env.OPENSHIFT_MYSQL_DB_PASSWORD,
          database: process.env.OPENSHIFT_GEAR_NAME
        });

        var multer = require('multer');
        var done = false;

        app.use(clientSessions({
          secret: 'xxxxx'
        }));

        app.use(function(req, res) {
          res.status(400);
          res.render('pages/404');
        });

         // Handle 500
        app.use(function(error, req, res, next) {
          res.status(500);
          res.render('pages/500');
        });

         //--- 
        app.use(multer({
          dest: 'public/uploads/',
          rename: function(fieldname, filename) {
            return filename + Date.now();
          },
          onFileUploadStart: function(file) {
            console.log(file.originalname + ' is starting ...')
          },
          onFileUploadComplete: function(file) {
            console.log(file.fieldname + ' uploaded to  ' + file.path)
            done = true;
          }
        }));

         //// --------------- start app routes --------------//
         // ----- GET -----
        router.get('/', function() {   // THIS PATTERN IS NOT WORKING
          console.log('hello world');  // this line is not working
          connection.query(strQuery, function(err, rows) {
            // res.render('pages/index');
          });

        });

【问题讨论】:

    标签: javascript jquery node.js express


    【解决方案1】:

    因为你没有处理“/​​”,这里更新代码

    var router = express.Router();
    app.use('/*', router);
    
    router.get('/', function(req, res) {
        res.send('welcome home');
    }
    router.get('/index', function(req, res) {
        res.send('welcome index');
    }
    

    【讨论】:

    • 抱歉,我处理了 '/' 模式。但是,' / ' 模式没有任何作用,只有 ' /* ' 模式工作正常。 :)
    【解决方案2】:

    你在第二行忘记了 '*'

    app.use('/*', router);
    

    【讨论】:

      【解决方案3】:

      你忘记重定向了吗?

      router.get("/", function (req, res) {
          res.redirect("/index");
      });
      

      【讨论】:

      • 感谢您的回复。但我想在这种情况下呈现 ejs 页面。我试过 router.get("/", function (req, res) { console.log("home"); });但不在控制台中打印“家”字。
      • @Munkhbat Mygmarsuren ,您没有为“/”路由提供任何路由处理程序。
      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2017-04-07
      • 2016-12-20
      • 1970-01-01
      • 2021-07-09
      相关资源
      最近更新 更多