使用 restify 时无法通过浏览器访问
Can't access via browser when using restify?
我正在为我的项目开发一个紧凑的API,然后我选择nodejs,restify和mongodb。我有这样的代码:
var restify = require('restify');
var mongoose = require('mongoose');
var httpPort = process.env.PORT || 5000;
var uristring = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/mydb';
db = mongoose.connect(uristring);
Schema = mongoose.Schema;
var myServer = restify.createServer({
formatters: {
'application/json': function(req, res, body){
if(req.params.callback){
var callbackFunctionName = req.params.callback.replace(/[^A-Za-z0-9_'.]/g, '');
return callbackFunctionName + "(" + JSON.stringify(body) + ");";
} else {
return JSON.stringify(body);
}
},
'text/html': function(req, res, body){
return body;
}
}
});
senseServer.use(restify.bodyParser());
var getHome = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.contentType = 'json';
res.send({version: '0.1', email: 'setfiretotherain@yahoo.com'});
}
myServer.listen(httpPort, function() {
var consoleMessage = ''n'n myServer is listening at %s 'n'n';
console.log(consoleMessage, senseServer.url);
});
myServer.get('/', getHome);
如果我使用 curl 命令调用 url 或通过 http://[localhost]:5000 访问,它工作得很好。
curl -X GET http://[localhost]:5000
curl -X GET http://domain.com:5000
但是,当我尝试通过浏览器访问时,例如 http://domain.com,它显示一次 json 内容,然后应用程序崩溃,出现如下错误(我在日志文件中):
http.js:854
throw new TypeError('first argument must be a string or Buffer');
^
TypeError: first argument must be a string or Buffer
at ServerResponse.OutgoingMessage.write (http.js:854:11)
at _cb (/root/server/node_modules/restify/lib/response.js:188:30)
at ServerResponse.send (/root/server/node_modules/restify/lib/response.js:199:25)
at emitRouteError (/root/server/node_modules/restify/lib/server.js:151:21)
at onRoute (/root/server/node_modules/restify/lib/server.js:623:33)
at Router.find (/root/server/node_modules/restify/lib/router.js:467:9)
at Server._route (/root/server/node_modules/restify/lib/server.js:617:21)
at routeAndRun (/root/server/node_modules/restify/lib/server.js:576:22)
at Server._handle (/root/server/node_modules/restify/lib/server.js:596:17)
at Server.onRequest (/root/server/node_modules/restify/lib/server.js:258:22)
error: Forever detected script exited with code: 8
error: Forever restarting script for 2 time
非常感谢您的时间。
您的浏览器可能正在尝试加载网站图标。
筛选/favicon 的请求.ico以便忽略它,或者为此资源提供某种响应。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 通过javascript跨浏览器访问outlook联系人文件夹
- 从浏览器访问页面时执行js函数's后退按钮
- 如何从浏览器访问硬件时间
- 从另一个浏览器访问一个浏览器中的html文档
- 通过浏览器访问 DynamoDB
- 从浏览器访问安卓API
- 通过移动浏览器访问硬件功能
- 使用 restify 时无法通过浏览器访问
- 使用浏览器访问文件系统文件
- 如何从浏览器访问设备功能
- 我们可以从移动设备浏览器访问设备图片库吗?
- 外部CSS样式不能在谷歌浏览器访问
- 通过浏览器访问设置菜单
- 如何为firefox浏览器访问object.style.filter
- 是否可以从移动设备上的浏览器访问本地文件
- 为什么javascript不能在通过iOS Twitter浏览器访问的网页上执行?
- ([javaScript]在iOS中通过HTML5浏览器访问摄像头
- 从web浏览器访问智能卡读卡器
- 测试URL是否可以从web浏览器访问,即确保没有被代理服务器阻止