花七-Node.js-错误解决

报错解决

1、nrm ls 命令报错

如图:

解决方法:

根据上图标出的 路径 找到 cli.js 将第17行做如下修改。

如图:

将第17行注释,添加第18行代码,第18行代码如下:

const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');

2、执行命令:gulp [任务名],报错

如图:

源代码为:

将源代码做如下修改(修改处已作标记):

3、搭建服务器,进行请求判断时报错

源代码:

// 引用 创建网站服务器的模块
const http = require('http');

// app对象即为网站服务器对象
const app = http.createServer();

// 对客户端请求做出反应
app.on('request', (req, res) => {

    // 1、获取请求方式
    // req.method
    console.log(req.method);
    if (req.method == 'POST') {
        res.end('post')
    } else if (req.method == 'GET') {
        res.end('get')
    }

    // 2、获取请求地址
    // req.url
    console.log(req.url);
    if (req.url == '/index') {
        res.end('welcome to homepage');
    } else if (req.url == '/list') {
        res.end('welcome to listpage');
    } else {
        res.end('not found');
    }

    // res.end('<h2>hello user</h2>');
});

// 监听 3000 端口
app.listen(3000);

// 网站服务器启动成功标志
console.log('网站服务器启动成功')

运行后以上代码后,再次访问网站报错:

原因:

res.end() 函数的作用是:结束此次响应,告诉客户端所有的消息已经发送。当服务器中所有的响应的内容发送完毕时,该函数必须被调用一次。如果不调用该函数,客户端将永远处于等待状态。

解决方法:除却最后使用的 res.end()函数,将此之前 res.end() 函数 替换为 res.write() 函数,具体操作如下:

// 引用 创建网站服务器的模块
const http = require('http');

// app对象即为网站服务器对象
const app = http.createServer();

// 对客户端请求做出反应
app.on('request', (req, res) => {

    // 1、获取请求方式
    // req.method
    console.log(req.method);
    if (req.method == 'POST') {
        res.write('post')
    } else if (req.method == 'GET') {
        res.write('get')
    }

    // 2、获取请求地址
    // req.url
    console.log(req.url);
    if (req.url == '/index') {
        res.write('welcome to homepage!');
    } else if (req.url == '/list') {
        res.write('welcome to listpage!');
    } else {
        res.write('not found!');
    }

    res.end(' This response ends!');
});

// 监听 3000 端口
app.listen(3000);

// 网站服务器启动成功标志
console.log('网站服务器启动成功')

4、node.js中,API:url 被弃用

解析URL地址使用URL类,无需引用API。

如下:

app.on('request', (req, res) => {


    res.writeHead(200, {
        'content-type': 'text/html;charset=utf8'
    });

    // 1、获取请求报文信息
    // req.headers
    // console.log(req.headers.host);

    // 2、获取请求地址
    // req.url
    console.log(req.url);

    const myURL = new URL('req.url');
    console.log(myURL);

但是吧,鄙人技术有限,愣是没成功,索性就换了另一种方法。(在此希望有大佬可以指点一二)

如下:

引用了 url-parse API,最终得以成功。

url-parse 的具体使用请见:git-hub之url-parse详情

5、win10系统下,为将数据导入mongodb数据库,须安装与配置 mongoimport 。

database-tools下载路径

笔者选择 .zip 下载解压后如图:

然后将文件夹移至 mongodb所在文件夹(笔者重命名了文件夹)

然后复制 mongoimport.exe 文件的路径

然后进入 高级系统配置 →  单机环境变量

进行如下操作:

6、向mongodb数据库导入数据库,命令行使用 mongoimport 命令失败 

PS E:\nodejsDB\test> mongoimport -d playground -c users --file .\user.json
2021-07-03T23:36:19.974+0800    connected to: mongodb://localhost/
2021-07-03T23:36:20.000+0800    Failed: cannot decode array into a D
2021-07-03T23:36:20.001+0800    0 document(s) imported successfully. 0 document(s) failed to import.

错误原因:文件格式声明错误 应将 --file 改为 -- jsonArray,即:

PS E:\nodejsDB\test> mongoimport -d playground -c users --jsonArray .\user.json
2021-07-03T23:37:56.966+0800    connected to: mongodb://localhost/
2021-07-03T23:37:57.059+0800    6 document(s) imported successfully. 0 document(s) failed to import.

7、数据库连接失败

原因: 未启动 MongoDB 服务

解决方法:

1、图形界面

ctrl + shift + esc 打开任务管理器 → 打开服务列表,找到 MongoDB服务 → 右击,启动

2、字符界面

net start MongoDB 启动服务

net stop MongoDB 停止服务

8、(2021.7.6)express 获取POST参数,不再使用 body-parser 方法(已弃用)。最新版 express内置了获取POST参数方法,示例:

const express = require('express');

// 创建网站服务器
const server = express();

// 拦截所有请求 
// extended: false 方法内部使用 queryString模块处理请求参数的格式
// extended: true 方法内部使用 第三方模块qs处理请求参数的格式
server.use(express.urlencoded({ extended: false }));

server.post('/add', (req, res) => {
    // 接收post请求参数
    res.send(req.body);
    console.log(req.body);
});

// 监听端口 3000
server.listen(3000);
console.log('服务器启动成功');

9、win10 解决80端口被占用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值