移动路线从app.js到route.js和app不再有效

时间:2015-09-29 02:12:38

标签: javascript node.js express

在我的app.js文件中,我有下面的代码,它按预期工作。我需要清理我的代码,所以我把它移动到它自己的路由/随机路由它不再有效,因为我收到一个错误,指出:“http://localhost:1337/random/1/1/testing 404(未找到)”我不确定为什么。我的原始代码在我的app.js文件中工作时是:

app.get('/random/:room/:userId/:message', function(req, res) {
    fs.appendFile(room.number.toString(), req.params.message, function(err) {
        if (err) {
            console.log('error writing messages to file');
        };
        fs.readFile('./' + room.number, 'utf-8', function(err, data) {
            if (err) {
                if (err.fileNotFound) {
                    return this.sendErrorMessage('can\'t find the file, you linked it incorrectly');
                }
                console.log('error reading message file');
            };

            if (req.params.userId == 1) {
                messages.user1.push(data);
            } else {
                messages.user2.push(data);
            };
            console.log(messages);
            res.send(data);
            fs.unlink(req.params.room, function(err) {
            });

        });
    });
});

新代码包含以下app.js

var express = require('express');
var app = express();
var fs = require('fs');
var random = require('./routes/random');

app.use('/random/', random);
app.use(express.static('public'));
app.use(express.static('public/js'));
app.use(express.static('public/images'));

在我移动之后,路线代码为:

var express = require ('express');
var fs = require ('fs');
var random = express.Router();

random.get('/random/:room/:userId/:message', function(req, res) {
    fs.appendFile(room.number.toString(), req.params.message, function(err) {
        if (err) {
            console.log('error writing messages to file');
        };
        fs.readFile('./' + room.number, 'utf-8', function(err, data) {
            if (err) {
                if (err.fileNotFound) {
                    return this.sendErrorMessage('can\'t find the file, you linked it incorrectly');
                }
                console.log('error reading message file');
            };

            if (req.params.userId == 1) {
                messages.user1.push(data);
            } else {
                messages.user2.push(data);
            };
            console.log(messages);
            res.send(data);
            fs.unlink(req.params.room, function(err) {
            });

        });
    });
});


module.exports = random;

任何人都可以解释我做错了什么,不允许它找到文件吗?

3 个答案:

答案 0 :(得分:2)

在你的代码中,你在random.js中定义一个名为random \ random ...的路由,首先在那里随机删除,因为中间件(app.use ..)会将带有/ random的所有路由指向你的路由器实例。

答案 1 :(得分:1)

您的路由器正在处理以/random开头的网址,并在路径/random/下将其附加到您的应用。删除其中一个(最好是路由器内部的那个)。

答案 2 :(得分:0)

我能够解决它。上面的两条评论都是正确的,但由于我的变量未定义,它仍然会抛出错误。我想通了,所以我正在关闭这个问题。谢谢你们两个