[Node.js]在windows下不得不防的小错误

TypeError: Arguments to path.join must be strings
    at f (path.js:204:15)
    at Object.filter (native)
    at exports.join (path.js:209:40)
    at exports.send (E:\nodejs\demo\socket.io-express\node_modules\express\node_modules\connect\lib\middleware\static.js:129:20)
    at ServerResponse.res.sendfile (E:\nodejs\demo\socket.io-express\node_modules\express\lib\response.js:186:3)
    at io.sockets.on.socket.emit.text (E:\nodejs\demo\socket.io-express\app.js:8:6)
    at callbacks (E:\nodejs\demo\socket.io-express\node_modules\express\lib\router\index.js:272:11)
    at param (E:\nodejs\demo\socket.io-express\node_modules\express\lib\router\index.js:246:11)
    at pass (E:\nodejs\demo\socket.io-express\node_modules\express\lib\router\index.js:253:5)
    at Router._dispatch (E:\nodejs\demo\socket.io- express\node_modules\express\lib\router\index.js:280:5)

Node.js中的两个模块Socket.io 和Express做整合的时候出现了以下的错误:


var express = require('express');
var app = module.exports = express.createServer(),
    io = require('socket.io').listen(app);
 
app.listen(3000);
 
app.get('/', function(req, res){
    res.sendfile(__dirname + '/index.html');
});
 
io.sockets.on('connection', function(socket){
    socket.emit('welcome', {text: 'OH HAI! U R CONNECTED!'});
});

错误原因:

主要的错误原因是上面代码第8行,将代码改为以下形式即可工作。

var express = require('express');
var app = module.exports = express.createServer(),
    io = require('socket.io').listen(app);
app.listen(3000);

app.get('/', function(req, res){
	res.sendfile('/index.html', {root: __dirname});
});

io.sockets.on('connection', function(socket){
	socket.emit('welcome', {text: 'OH HAI! U R CONNECTED'});
});


在win 下 传

__dirname + '/index.html' -> E:\nodejs\demo/index.html

貌似,那里用 url 解析模块.最后解析的结果不是windows 那种路径样子..

然后到创建流的时候路径就不对了..

参考资料:https://github.com/visionmedia/send


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值