标签 - Nodejs

Nodejs    2023-02-17 11:26:10    0    0    0

mongoosejs 有一个跟 mongodb 的兼容性表格:

MongoDB Server 2.4.x: mongoose ^3.8 or 4.x
MongoDB Server 2.6.x: mongoose ^3.8.8 or 4.x
MongoDB Server 3.0.x: mongoose ^3.8.22, 4.x, or 5.x
MongoDB Server 3.2.x: mongoose ^4.3.0 or 5.x
MongoDB Server 3.4.x: mongoose ^4.7.3 or 5.x
MongoDB Server 3.6.x: mongoose 5.x
MongoDB Server 4.0.x: mongoose ^5.2.0

Nodejs    2022-08-25 15:26:13    0    0    0

前言

这是由于mysql自带的一段时间无动作会自动关闭的机制

解决

使用闭包可以完美解决问题

  1. var mysql = require('mysql')
  2. var sqlConfig = {
  3. host: 'localhost',
  4. user: 'root',
  5. password: 'pwd',
  6. database: 'dbbase'
  7. }
  8. var conn = function(){
  9. let connection = mysql.createConnection(sqlConfig)
  10. connection.connect()
  11. connection.on('error',err=>{
  12. console.log('Re-connecting lost connection: ');
  13. connection = mysql.createConnection(sqlConfig)
  14. })
  15. return function(){
  16. return connection
  17. }
  18. }
  19. module.exports = conn()

————————————————
版权声明:本文为CSDN博主「apades」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41535611/article/details/100798135

Nodejs    2022-08-24 15:50:56    0    0    0

本文总结常见的使⽤node操作redis服务,redis的key是唯一的,如果一个key所对应的存储类型是string,则不能再次覆盖式设置key为hash;

1. 启动redis

1. 这里我们使用docker方式搭建redis服务器

  1. docker run -d --name redis -p 6379:6379 redis:2.8

2. 初始化

1. node操作redis需要引⼊redis包;

  1. const redis = require('redis');
  2. const client = redis.createClient( 6379, '127.0.0.1');
  3. const util = require('util');

3. string(字符串)

1. ⼀个字符串类型的值最⼤长度为512 M。

2. 常见操作: get,set,mget,mset,incr(计器++),decr(--)等等;

  1. client.set('hello', 5, function(err, obj) {
  2. client.incr('hello', function(err,data) {
  3. client.get('hello', function(err,data) {
  4. console.log(data); // 6
  5. })
  6. })
  7. })

4. hash(哈希)

1. hash可⽤来存储对象,⼀个Redis 列表中最多可存储232-1(40亿)个元素

  1. var obj = {
  2. name:'sss',
  3. age:223
  4. }
  5. client.hset("test", obj, function(err, obj) {
  6. client.hgetall('test', (err, obj) => {
  7. console.log(`hgetall:${JSON.stringify(obj)}`);
  8. console.log(obj.age);
  9. })
  10. clie
Nodejs    2022-08-23 18:27:08    0    0    0

刚刚开始学js,本文是基于node.js和websocket实现一个简单的在线聊天室系统(聊天群)。

本文适合纯小白阅读。

废话不多说,我们正式开始。

在B/S架构中,我们要得到一个数据,要向服务器请求,然后服务器响应。那么如果我们客户端不发送请求,服务器会不会主动给我们的客户端(浏览器)发东西呢?

答案是不会的,客户端和服务器通过TCP/IP协议进行连接,然后通过HTTP协议进行请求连接。而HTTP协议是一个请求—响应式的协议,而且它是一个无状态的协议,即每一次请求—响应之间是没有关系的。

而我们的聊天室需要什么呢?

1.发送消息      2.接收消息

在接收消息中:一个客户端给服务器发送消息,服务器接收消息,然后主动发给另一个客户端。

所以HTTP满足不了我们的要求。这里我们就要用到socket协议。当服务器与客户端连接后,两者都会时刻做着收发消息的准备。

首先在npm中下载socket.io模块(之前要安装了node.js才行)。打开cmd。

title

(我创建了一个node.js chat文件夹,文件都放在这里面)

然后开始写我们的服务器代码,创建文件server.js。

  1. //server.js
  2. var http = require('http');
  3. var fs = require('fs');
  4. var ws = require('socket.io'); //引入socket.io
  5. var server = http.createServer(function (req, res) {
  6. var html = fs.readFileSync('./client.html');
  7. //client.html是发送给客户端的文件(客户端界面)
  8. res.end(html);
  9. }).listen(8000);
  10. var io = ws(server); //http服务与ws服务相关联, 返回io服务实例
  11. //监听用户的连接事件
  12. io.on('connection',function (socket) {
  13. //发生在用户连接io服务器时
  14. console.log('有新用户进入房间');
  15. //消息
Nodejs    2021-12-24 10:26:03    5    0    0

一、 npm 运行错误:npm ERR! cb() never called!

  1. D:\ProgramFiles\nodejs>npm install
  2. npm ERR! cb() never called!
  3. npm ERR! This is an error with npm itself. Please report this error at:
  4. npm ERR! <https://npm.community>
  5. npm ERR! A complete log of this run can be found in:
  6. npm ERR! D:\ProgramFiles\nodejs\node_cache\_logs\2018-12-26T11_06_54_492Z-debug.log

二、 错误原因

  • node_module文件缓存导致
  • 设置代理导致

三、 解决方案

  • npm指令清除npm缓存:
  1. npm cache clean --force
  • 删除node_module包
  • 删除代理:
  1. npm config rm proxy
  2. npm config rm https-proxy

操作完以上步骤问题基本就解决了,如果还又错误就要详细看看是什么错误了!

Nodejs    2019-02-21 17:05:26    35    0    0

自从Node横空出世后,很快有人就用它来开发爬虫,网上也常见Node爬虫教程。然而,很难看到一个通用的、功能丰富的爬虫开源项目,到Github上找了一下找到这个,算是目前能找到的最好的了。

这里将它的文档翻译一下,期待更多的实用案例。

node-crawler
目标打造成Node社区最强大和流行的爬虫/内容抽取工具库,且支持生产环境。
特性:

  • 服务端DOM和自动jQuery注入,使用Cheerio(默认)或JSDOM
  • 可配置的连接池大小和重试次数
  • Control rate limit
  • 支持设置请求队列优先级
  • forceUTF8模式可让爬虫处理字符集编码探测和转换
  • 兼容Node 4.x及以上版本

更新日志:https://github.com/bda-research/node-crawler/blob/master/CHANGELOG.md

上手指南

安装

  1. $ npm install crawler

使用

  1. var Crawler = require("crawler");
  2. var c = new Crawler({
  3. maxConnections : 10,
  4. // 这个回调每个爬取到的页面都会触发
  5. callback : function (error, res, done) {
  6. if(error){
  7. console.log(error);
  8. }else{
  9. var $ = res.$;
  10. // $默认使用Cheerio
  11. // 这是为服务端设计的轻量级jQuery核心实现
  12. console.log($("title").text());
  13. }
  14. done();
  15. }
  16. });
  17. // 爬取一个URL,使用默认的callback
  18. c.queue('http://www.amazon.com');
  19. // 爬取URL列表
  20. c.queue(['http://www.google.com/','http://www.yahoo.com']);
  21. // 爬取页面,自