[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

[Node.js]在windows下不得不防的小错误,布布扣,bubuko.com

时间: 2024-08-08 01:16:20

[Node.js]在windows下不得不防的小错误的相关文章

node.js在windows下的学习笔记(2)---简单熟悉一些命令

1.打开如下的安装 2.输入node -v,显示node的版本号 3.输入node --help.显示帮助命令 4.自己用一个文本编辑器编写一下代码,保存为text.js,然后在控制台输入node.exe  text.js的路径(直接把这个js文件拖到控制台自动显示路径),按下回车键 var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {&

node.js在windows下的学习笔记(1)---安装node.js

1.首先打开http://www.nodejs.org/ 2.选择DOWNLOADS,跳转到下面的画面,我的系统是windows7的32位.所以选择.msi的32bit版本. 3.下载后,得到一个5.43MB大小的安装包, 4.运行安装包 点击next 打个勾,点击next 选择安装目录 最后,安装成功啦 node.js在windows下的学习笔记(1)---安装node.js,布布扣,bubuko.com

node.js之windows下环境终极配置

大家都知道现在node.js相当流行,出门在外,如果都没听说过node.js,基本上算是out了,前段时间做一个项目,用到了实时通讯功能,当时用的就是node.js来做的,我有幸有研究了一番,别的不敢说,环境配置应该是很熟练了.首先声明下,我用的是windows的环境,如果你用的是mac或Linux,那么可以绕道了. 第一,大家可以在node.js官网下载一个符合自己电脑的版本:https://nodejs.org/download/,如下图, 这里,我安装的windows installer.

node.js在windows下的学习笔记(3)---npm

1.什么是npm npm是Node.js的包管理器,它允许开发人员在Node.js的应用程序中创建,共享,重用模块.之前我们通过node的官网的安装程序安装了Node.js,那么npm就已经装好了的. 既然npm是Node.js的包管理器,那么什么是包呢? 包:包是一个文件夹,将模块封装起来,用于发布,更新,依赖管理,版本控制.你可以简单的把包理解成就是一个文件夹.package.json描述包的一些信息 模块:一个实现某些特定功能的文件,以实现模块化编程. 2.如何使用npm为node.js安

node.js在windows下的学习笔记(4)---同步,异步,回调的概念

Node.js是使用事件驱动的,非阻塞的I/O模型,用于构建快速的,可扩展的网络应用程序. Node.js想解决的问题是:处理输入,输入,高并发 1.阻塞与非阻塞 阻塞也叫同步,是指每一次执行一个操作,在这个操作完成之前,代码的执行会被阻塞,无法移到下一个操作上. 阻塞就相当于你在超市里面买东西,结账,在排队,如果前面的人没买单,你就不能买,一定要等前面的人先执行完其操作才可以 非阻塞就相当于你在外婆家取号,然后就可以去干别的事情了,等轮到我们的时候,短信发到我们的手机上了,说轮到我们了,这样我

(一)、node.js在windows下的安装

可以到这个链接下下载安装包:http://nodejs.org/download/ 以下是网站截图 下载下来之后我们就开始安装 一直点击下一步 开始安装 安装完成之后,会在开始菜单中出现node.js的文件 点击这个命令框,输入 node -v,会出现版本 为了证明安装之后可以使用了,我们打印一句话 首先输入 node 敲回车,之后输入 console.log('HELLO WORLD');敲回车如下图所示 会输出 HELLO WORLD 按两次ctrl+c可以退回初始进入位置 现在说明我们已经

node.js在windows下的学习笔记(8)---进程管理Process

process是一个全局内置对象,可以在代码中的任何位置访问此对象,这个对象代表我们的node.js代码宿主的操作系统进程对象. 使用process对象可以截获进程的异常.退出等事件,也可以获取进程的当前目录.环境变量.内存占用等信息,还可以执行进程退出.工作目录切换等操作 1.当我们想要查看应用程序当前目录时,可以使用cwd函数 : process.cwd(); 2.如果需要改变应用程序目录,就要使用chdir函数了: process.chdir('目录名'); 3.stdout是标准输出流,

node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端

//引入http模块 var http = require('http'); //调用http的createServer的方法,这个方法有一个回调函数,这个回调数 //的作用是没到那个有请求发送给服务器的时候,就执行这个回调函数 http.createServer(function (req, res) { //发送 res.end('Hello World\n'); }).listen(3000, "127.0.0.1");//端口和IP的绑定 console.log('Server

node.js在windows下的学习笔记(7)---express的app.js的详细配置说明

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes