[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 那种路径样子..
然后到创建流的时候路径就不正确了..
[Node.js]在windows下不得不防的小错误的更多相关文章
- node.js之windows下环境终极配置
大家都知道现在node.js相当流行,出门在外,如果都没听说过node.js,基本上算是out了,前段时间做一个项目,用到了实时通讯功能,当时用的就是node.js来做的,我有幸有研究了一番,别的不敢 ...
- node.js在windows下的学习笔记(3)---npm
1.什么是npm npm是Node.js的包管理器,它允许开发人员在Node.js的应用程序中创建,共享,重用模块.之前我们通过node的官网的安装程序安装了Node.js,那么npm就已经装好了的. ...
- node.js在windows下的学习笔记(9)---文件I/O模块
开发中我们经常会有文件I/O的需求,node.js中提供一个名为fs的模块来支持I/O操作,fs模块的文件I/O是对标准POSIX函数的简单封装. 1.将"hello world" ...
- node.js在windows下的学习笔记(8)---进程管理Process
process是一个全局内置对象,可以在代码中的任何位置访问此对象,这个对象代表我们的node.js代码宿主的操作系统进程对象. 使用process对象可以截获进程的异常.退出等事件,也可以获取进程的 ...
- node.js在windows下的学习笔记(4)---同步,异步,回调的概念
Node.js是使用事件驱动的,非阻塞的I/O模型,用于构建快速的,可扩展的网络应用程序. Node.js想解决的问题是:处理输入,输入,高并发 1.阻塞与非阻塞 阻塞也叫同步,是指每一次执行一个操作 ...
- node.js在windows下的学习笔记(7)---express的app.js的详细配置说明
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon') ...
- node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端
//引入http模块 var http = require('http'); //调用http的createServer的方法,这个方法有一个回调函数,这个回调数 //的作用是当有请求发送给服务器的时 ...
- node.js在windows下的学习笔记(2)---简单熟悉一些命令
1.打开如下的安装 2.输入node -v,显示node的版本号 3.输入node --help.显示帮助命令 4.在命令行中输入node,按下回车键,当出现>符号的时候即进入了node的REP ...
- node.js在windows下的学习笔记(6)---安装Express
Express是什么呢? express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.对于WEB应用程序而言,会有许多诸如模板和路由这样的公共模式在的,虽然也可以自己编写代码解 ...
随机推荐
- 几个检查当前运行的LINUX是在VM还是在实体机中的方法
昨天提到了VM中的逃逸问题,要想逃逸,首先要检测当前操作系统是否为VM,下面提供几个LINUX下的检查方法: 第一,首推facter virtual ,权限为普通用户,约定,普通用户命令提示符用$表示 ...
- SICP 习题 (1.9) 解题总结
SICP 习题 1.9 开始针对“迭代计算过程”和“递归计算过程”,有关迭代计算过程和递归计算过程的内容在书中的1.2.1节有详细讨论,要完成习题1.9,必须完全吃透1.2.1节的内容,不然的话,即使 ...
- 连载:面向对象葵花宝典:思想、技巧与实践(33) - ISP原则
ISP,Interface Segregation Principle,中文翻译为"接口隔离原则". 和DIP原则一样,ISP原则也是大名鼎鼎的Martin大师提出来的,他在19 ...
- 2. QT窗体间值的传递
一.主窗体与子窗体传参 方法有很多,这里介绍一种通过重载子窗体的构造函数实现主窗体参数传入到子窗体,并通过QT信号和槽的机制实现子窗口到主窗口值的传递. 主和子窗体的设置如下: 主要实现功能为: 1 ...
- VS2012 拆分视图按钮不见,代码,设计
工具--选项--HTML设计器 然后重启就有了.
- CLR via C# - Char_String
.NET中Char表示为16为的Unicode值,Char提供两个public const字段MinValue('\0',写成'\u0000'也是一样的)和MaxValue('\uffff'). Ch ...
- C#邮件发送
public static void CreateCopyMessage() { MailAddress from = new MailAddress("yang@163.com" ...
- 学习AJAX(二)
- 第二章 Android Studio使用第三方模拟器
1.为什么要使用第三方模拟器 Android Studio自带模拟器,相对Eclipse来说项目启动速度的确快了很多倍,提高了开发效率.但和第三方模拟器进行对比的话,还是第三方的模拟器运行速度更快些. ...
- Sql语句不能识别Go的解决办法(动态创建表的触发器)
问题来源 用sqlserver直接打开sql文本,执行没问题,但是当用Sqlcommand类执行cmdtext命令文本时总是失败报错. 原因分析及解决 用数据库直接执行sql语句没问题,甚至还可以用G ...