将route从app.js移到route.js, app就不能工作了
Moved route from app.js to route.js and app no longer works
在我的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;
谁能解释一下我做错了什么,不允许它找到文件?
在你的代码中,你正在定义一个名为random'random…在random.js中,删除那里的第一个random,因为中间件(app.use…)会将所有带有/random的路由定向到你的router实例。
你的路由器正在处理一个以/random
开头的url,你把它附加到你的应用程序的路径/random/
下。删除其中一个(最好是路由器内部的那个)。
我能够修复它。上面的两个评论都是正确的,但由于我的变量未定义,它仍然抛出错误。我想明白了,所以我要结束这个问题。谢谢大家
相关文章:
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- Django无法通过urls.py配置找到djangular/app.js文件.如何进行故障排除
- 使用Express4将数组从Nodejs中的app.js传递到routes/index.js
- 从Babel 5.8.35升级到6.0.0将不会编译带有SyntaxError和意外标记的app.js
- Zendesk app.js示例用于发送外部电子邮件通知或AJAX请求
- Angularjs app.js getting URL
- 为Backbone.js源文件(amd-app.js)重新创建构建环境
- ionic框架中的app.js函数冲突
- Trigger $modal.open from app.js
- 在app.js之外调用app.locals
- 如何确保angularjs app.js中的同步加载
- Ionic 2 从子页面修改 app.js 中的变量
- 部分而不是 app.js 中的角度路由定义
- mongodb 的 collection.find() 在 Express app.js 文件中使用时出现问题
- 是否可以在没有app.js的情况下创建一个extjs应用程序的js文件(如构建版本)
- sails.js中app.js文件中的环境变量
- 我可以把一个参数从控制器传递到app.js吗
- app.js显示错误:TypeError:无法调用方法'查询'为null
- Rails 4 App-JS在开发模式下可以与Webrick合作,但不能与Passenger/Apache2合作
- 如何在expressjs中从html页面调用app.js函数