2021-02-01

nodejs尝试中遇到的错误

一、文件系统/模块 fs:

1、文件路径名转义字符之间的转化
(1)反斜杠 加 n:\n 就是换行符,\t 就是制表符,\\ 就是反斜杠 \ 等等……
这里就疏忽了这个问题。。。

在这里插入图片描述
2、文件系统的write与writeFile方法传参数区别,类似的还有read与readFile方法传参数的区别:

(1)使用文件系统fs中的write方法时,遇到报错:自己不认识其中的fd是什么东东,查了一下,发现是默认的一个参数取名
Uncaught: TypeError [ERR_INVALID_ARG_TYPE]: The "fd" argument must be of type number.
在这里插入图片描述
在这里插入图片描述
(2)查看正确的使用方法:
在这里插入图片描述
在这里插入图片描述

二、网络与服务器模块 http,server:

1、先引入http模块,再创建一个Server,接着监听某个端口,最后设置响应方法与函数;
例:

let h1 = require('http'); // 引入http模块
let s1 = h1.createServer(); //创建一个server对象
s1.listen(800, function(data) {  // 设置监听端口号与回调函数
	console.log('data is: ' + data);
});
// 绑定接收客户端请求的request事件
s1.on('request', function(req, resp) { // 这里进行正式的数据返回响应
	resp.setHeader("content-type", "text/html;charset=utf-8");//设置响应头类型
	resp.write("your name is who?jack?or peter?");
	resp.end(); 
	// 响应返回数据后记得结束一下,
	// 否则客户端以为服务器端还有数据会返回,就一直等待;
});

(1)监听端口时,注意端口取值范围0~65535,而我们比较常听的了解的就是8080(Apache服务器),3306(MySQL的)等这样一些公司已占有的,不能取相同的端口号;
(2)设置响应方法,函数时,返回数据的相关操作一般写法有 res.write("…"); res.end();
(3)调用write方法的对象不是req,而是resp,负责响应数据的那个对象来使用write方法;
在这里插入图片描述
在这里插入图片描述

(2)浏览器中请求得到返回数据后,渲染到页面上出现乱码(特别是关于html结构的):
nodejs服务器端没有设置合适的响应头类型,一般是要设置为utf-8,
resp.setHeader(“content-type”, “text/html;charset=utf-8”);
① 联想与思考:看到这里,我想到了之前看过书上说现在的网页HTML文件的编码形式书写语法直接写成 <meta charset=“utf-8” />就行了,而不用像以前那样写成<meta http-equiv=“content-type” content=“text/html;charset=utf-8” /> 的做法了。

在这里插入图片描述
在这里插入图片描述
(3)语句的重复书写&变量重复声明:
① 引入http模块的语句要注意防止重复书写:
一是要注意声明不同变量来接收引入的模块,防止变量已存在造成重复声明变量,二是模块已经引入,可以使用接收了这个模块信息的变量来使用,多次使用(,防止浪费。。。);

报错提示: Uncaught SyntaxError: Identifier 'h1' has already been declared

在这里插入图片描述

② 未关闭的服务器和端口号不要重复定义监听方法:
上一次开启的监听服务器对象server与端口号,如果没有关闭,再次在nodejs端重复书写这样的语句。会报错,

报错提示: Listen method has been called more than once without closing.

在这里插入图片描述
③ 设置响应头信息 resp.setHeader(“content-type”, “text/html;charset=utf-8”);的语句在同一个监听方法中不要重复书写:之前在同一个http与server对象以及监听方法,处理方法中设置了相应的响应头类型,这里没必要再声明了(个人的理解);

报错提示: Uncaught: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值