【问题标题】:Express can't reach route快递无法到达路线
【发布时间】:2017-08-16 10:31:44
【问题描述】:

我有以下文件:(auth.js)

module.exports = function (express, mongoose, router) {

    router.route('/setup')
        .get(function (req, res) {
            var salt = bcrypt.genSaltSync(10);
            var hashed =  bcrypt.hashSync(req.query.password, salt);
            // create a sample user
            mongoose.models.playlist.create({username: 'Hieratic', password: hashed}, function (err, item) {

                if (err) throw err;

                console.log('User saved successfully');
                res.json({ success: true });
            });

        });


    return router;
};

以及当前服务器文件:(server.js)

    "use strict";

var url = require('url');
var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var crypto = require('crypto');
//npm install request
var request = require('request');
var config = require('./config/access.json');
var admin = require("firebase-admin");
var fireBaseConfig = require('./config/firebase.config.json');
var mongoose = require('mongoose');
var MongoClient = require('mongodb').MongoClient;
var mongodbConfig = require('./config/database.json');
var exec = require('child-process-promise').exec;
var app = express();

/**
 * Schemas
 */
var UserModel = require('./schemas/user.schema.js')(mongoose);
var PlayListModel = require('./schemas/playlist.schema.js')(mongoose);


app.use(function (req, res, next) {
    // CORS headers
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-Type, Accept, x-access-token, Cache-Control, Pragma"
    );
    next();
});
var router = express.Router();
app.use(bodyParser.json({limit: '4mb'}));
app.use(bodyParser.urlencoded({
    extended: true,
    limit: '4mb'
}));

if (mongodbConfig.username && mongodbConfig.password) {
    mongoose.connect(`mongodb://${mongodbConfig.username}:${mongodbConfig.password}@${mongodbConfig.host}:${mongodbConfig.port}/${mongodbConfig.database}`);
}
else {
    mongoose.connect(`mongodb://${mongodbConfig.host}:${mongodbConfig.port}/${mongodbConfig.database}`);
}
process.on('disconnect', function () {
    // If mongodb connection is not terminated child process never dies
    mongoose.disconnect();
});
require('./auth.js')(express, mongoose, router);


var port = 51000;
app.listen(port);
console.log('Magic happens at http://localhost:' + port);

当我尝试访问 /setup 路由时,它确实会访问服务器,但是会抛出一个 html 页面:

(http://localhost:51000/setup):

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>
<body>
    <pre>Cannot GET /setup</pre>
</body>

谁能看到我做错了什么?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    您已创建router,但未将其注册为中间件:

    var router = express.Router();
    require('./auth.js')(express, mongoose, router);
    app.use(router);
    

    【讨论】:

      【解决方案2】:

      参考Cannot GET / Nodejs Error 您没有设置路线。 像这样服务您的页面:

      app.get('/', function (req, res) {
        res.render('index', {});
      });
      

      【讨论】:

      • 我不想要一个页面,我只想访问路由。
      猜你喜欢
      • 2018-02-08
      • 2016-12-18
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2019-03-11
      • 2016-07-03
      相关资源
      最近更新 更多