WEB技术之前端技术

NodeJs相关内容

PHPer 2018-02-08 1922 0 0

这里整理下NodeJs的相关内容。

这里整理下NodeJs的相关内容。

有些项目对Nodejs的版本有要求,现在2023年Nodejs最新的已经是v20版本了

https://gitee.com/raingad/im-chat-front/ 这个项目在运行npm install时提示只支持node的v14-v19不支持v20,强行安装后,运行npm run serve 出现报错说defineConfig不是方法。

const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  runtimeCompiler: true,
  productionSourceMap: false,
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  assetsDir: 'assets',
  devServer: {
    https: true, // 开启https
    port: 3001, // 端口号
    host: '0.0.0.0',  // 项目地址
  },
  css: {
    loaderOptions: {
      sass: {
        sassOptions: {
          outputStyle: 'expanded'
        }
      }
    }
  }
});

于是我只能卸载了Node的v20,重新下载了node的v19版本安装。之后运行npm run serve就ok了

dcdfd8de2f-qq-jie-tu20231210122628_normal.jpg

但是打开页面后有报错...

立即注册

更新于:2023-12-10 12:37:46
    您需要登录后才可以评论。 立即注册

    Windows 上nodejs npm 设置全局变量安装路径及环境配置

    安装 nodejs 的时候最好不要安装到默认的C盘下。但是一般情况下安装node.js环境,程序会自动把 npm 全局模块的路径设置在系统盘(一般默认是C盘)。

    查看 npm 默认路径配置

    查看 npm 路径配置,npm 的默认安装路径:C:\用户\用户名\AppData\Roming\npm

    npm config ls

    如果是第一次使用 npm 安装 npm 安装包的话,在配置中只会看到prifix的选项,就是 npm 默认的 全局安装目录。但是如果多次使用 npm 安装包的话,就会看到cache和prefix两个路径。

    配置npm在安装全局模块时的路径和缓存cache的路径

    默认情况下,在哪个文件夹下运行 npm,npm 就在当前目录创建一个文件夹 node_modules,然后将要安装的程序安装到文件夹node_modules里面。这样就是每次下载或安装插件啥的都会自动创建这个 node_module 文件夹,有点乱,所以下面就可以改变这个安装程序的默认路径。

    在执行例如npm install webpack -g等命令全局安装的时候,默认会将模块安装在 C:\Users\用户名\AppData\Roaming路径下的npm和npm_cache中,不方便管理且占用C盘空间,如下图所示:

    所以这里配置自定义的全局模块安装目录,在node.js安装目录下新建两个文件夹 node_global和node_cache,然后执行如下两个命令:...

    立即注册
    更新于:2023-12-10 12:14:36

    提示node: command not found

    sudo ln -s /www/server/nodejs/v14.17.6/bin/node /usr/bin/node

    找到node路径,把他放到

    sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/node /usr/bin/node...

    立即注册
    更新于:2024-07-09 13:19:40

    解决nodejs mysql Error: Connection lost The server closed the connection

    nodejs连接mysql数据库一段时间(具体多长时间不知道是在哪里设置的)无操作会断开连接,导致后续执行sql时会报错:数据库服务器已经关闭了连接,为此用下面方法解决。 20241002

    var mysqlConfig = {     
          host     : 'localhost',       
          user     : 'test',              
          password : '123456',       
          port: '3306',                   
          database: 'test' 
        };
        var connection = mysql.createConnection(mysqlConfig); 
        connection.connect();
        connection.on('error',err=>{
                console.log('Re-connecting lost connection: ');
                connection = mysql.createConnection(mysqlConfig)
            });
        ......	    	
    

    上面是我实测有效的方法 20241002


    下面是转载的内容

    Node连接MySql,会出现几分钟无动作则自动关闭连接,导致Node服务器Down掉。 报错信息: 0cd872d215_normal.png 解决方法:将sql文件修改为连接池的写法,查询语句也是。 参考链接:https://www.npmjs.com/package/mysql2 具体实现: 原连接写法(db.js):写法没错,但因为数据库无操作断开机制所以还是有问题。看了其他的博客,尝试做了异常处理,还是会出现报错。

    const mysql = require("mysql");
    const sqlConfig = {
    	host: "localhost",
    	user: "root",
    	password: "root",
    	database: "campus",
    };
    var connection;
    function handleDisconnect() {
    	connection = mysql.createConnection(sqlConfig);
    	connection.connect(function (err) {
    		if (err) {
    			console.log("error when connecting to db:", err);
    			setTimeout(handleDisconnect, 2000);
    		}
    	});
    	connection.on("error", function (err) {
    		console.log("db error", err);
    		if (err.code === "PROTOCOL_CONNECTION_LOST") {
    			handleDisconnect();
    		} else {
    			throw err;
    		}
    	});
    }
    handleDisconnect();
    export default handleDisconnect;
    

    更改后使用连接池的写法:(db.js) ...

    立即注册
    更新于:2024-10-02 23:19:54

    理解setInterval和setTimeout以及JS执行机制

    今天先讲讲,set看看这段代码会输出什么执行的时间是多久

    function test(){
        console.log('开始');
        seconds=1;
        var timer = setInterval(() => {
            console.log('内部');
            seconds--;
            if(seconds <= 0){
                clearInterval(timer);
            }
        }, 5000 );
        console.log('函数尾部');
    }
    
    test();
    

    输出的结果是

    开始
    函数尾部
    内部
    [Finished in 5.3s]
    

    注意,输出“函数尾部”后,经过了5秒之后输出“内部”,之后结束。...

    立即注册
    更新于:2022-04-29 19:33:00

    CentOS环境Nodejs的yum安装并手动升级到最新版本(方法长期有效)

    2022年5月node的稳定版本是16.5.0,Cenots默认安装的是10.23.1,有些npm安装的扩展已经不支持这么低的版本,所以升级到最新稳定版本。

    先确认系统是否已经安装了epel-release包:

    yum info epel-release
    

    如果有输出epel-release的已安装信息,则说明已经安装,如果提示没有安装或可安装则安装

    yum install epel-release
    

    安装完后,就可以使用yum命令安装nodejs了

    yum install nodejs -y
    

    发现,版本比较低。

    node -v
    

    v10.23.1

    按照如下步骤一步一步来:

    1. 清缓存

    npm cache clean -f
    

    2. 安装node版本管理工具'n'

    npm install n -g
    

    3. 安装node最新的稳定版本(我这里就是用的这个,安装时显示的是16.15.0)

    n stable
    

    或者可以安装最新版本

    n latest
    

    或者制定版本(比如:安装node指定版本8.9.4)

    n 15.1.0
    

    4. 检查安装结果,发现升级的版本没加到path里面 ...

    立即注册
    更新于:2022-05-29 14:10:41

    node同步查询数据库(mysql)

    mysql模块默认异步操作,在写一些简单脚本时会比较痛苦,可以通过async/await和Promise封装成同步操作

    async function query (connection, sql) {
      return new Promise((resolve, reject) => {
        connection.query(sql, function (error, results) {
          if (error) reject(results);
          resolve(results);
        });
      })
    }
    

    使用时需要使用变量接收返回值,并注意加上await

    var connection = mysql.createConnection({     
          host     : 'localhost',       
          user     : 'test',              
          password : '123456',       
          port: '3306',                   
          database: 'test' 
        }); 
    connection.connect();
    let result = await query(connection, 'select 1 from dual');
    console.log(result);  // [ RowDataPacket { '1': 1 } ]
    connection.end();
    

    引用自:...

    立即注册
    更新于:2024-10-01 23:20:53

    Puppeteer模拟浏览器时禁止图片加载

    Puppeteer模拟浏览器时禁止图片加载 - 简书 (jianshu.com)


    我现在做的项目需要对于网站进行实时刷新和数据获取,

    一开始没什么问题,可是有一天突然被警告说由于经常的刷新和访问页面导致对方的图片服务器崩溃了。。。

    由于我也不需要访问图片的需求,所以要改进为不加载图片的刷新页面和数据获取。...

    立即注册
    更新于:2024-10-02 23:05:27

    ddddocr验证码识别-java&amp;nodejs&amp;python

    nodejs版本

    安装包

    npm install ddddocr

    运行会报错TypeError: Ddddocr.create is not a function,

    需要 修改 ddddocr/dist/index.js 最后一行exports.default = DdddOcr;改为 module.exports = DdddOcr;

    ddddocr验证码识别-java&nodejs&python_nodejs ddddocr-CSDN博客


    1. java版本
    参考 https://gitee.com/GCSZHN/ddddocr-for-java?_from=gitee_search java 11
    改造使用 jdk1.8 
    https://gitee.com/bestman_456/ddddocr4j
    

    引入依赖

     <dependency>
        <groupId>com.yl</groupId>
        <artifactId>ddddocr4j</artifactId>
        <version>1.0.0</version>
    </dependency>
    

    DDDDOcrUtil

    package com.yl.util;
    import com.yl.ddddocr.OCREngine;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang3.StringUtils;
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Base64;
    /**
     * DDDDOcrUtil
     *
     * @author liuxb
     * @date 2023/4/28 0:09
     */
    @Slf4j
    public class DDDDOcrUtil {
        private static final OCREngine ocrEngine = OCREngine.instance();
        /**
         * 获取识别的验证码
         *
         * @param base64 验证码base64字符串
         * @return
         */
        public static String getCode(String base64) {
            byte[] bytes = Base64.getDecoder().decode(base64);
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            try {
                BufferedImage bufferedImage = ImageIO.read(bis);
                return ocrEngine.recognize(bufferedImage);
            } catch (IOException e) {
                log.error("识别验证码异常", e);
                return StringUtils.EMPTY;
            }
        }
        /**
         * 获取识别的验证码
         *
         * @param inputStream 验证码图片输入流
         * @return
         */
        public static String getCode(InputStream inputStream) {
            try {
                BufferedImage bufferedImage = ImageIO.read(inputStream);
                return ocrEngine.recognize(bufferedImage);
            } catch (IOException e) {
                log.error("识别验证码异常", e);
                return StringUtils.EMPTY;
            }
        }
    }
    
    2. nodejs版本
    安装包
    npm install ddddocr
    安装的包,报错,需要 修改 ddddocr/dist/index.js 最后一行为  module.exports = DdddOcr;
    测试
    const Ddddocr  = require(ddddocr)
    var fs = require(fs) //引入fs模块
    var path = require(path)
    var imgDir = "D:/verifies"
    var array = fs.readdirSync(imgDir)
    array.forEach(item => {
        var file = path.join(imgDir, item)
        Ddddocr.create().then(async ddddocr => {
    		// 也可传入 文件路径	
    		const verifyCode = await ddddocr.classification(file);
    		console.log(file, verifyCode)
    	})
    })
    
    3. Python版本
    pip install ddddocr
    import os
    import ddddocr
    # common_old.onnx,  beta=True common.onnx
    ocr = ddddocr.DdddOcr()
    # dirPath = rD:\upload\img
    dirPath = rD:\verifies
    for ff in os.listdir(dirPath):
        path = os.path.join(dirPath, ff)
        with open(path, rb) as f:
            img_bytes = f.read()
        res = ocr.classification(img_bytes)
        print(路径: + path + , 识别出的验证码为: + res)
    


    ...

    立即注册
    更新于:2024-10-05 15:54:12

    JS for 循环里的 await

    结果依旧,这说明在普通的 for 循环里,程序会等待上一步迭代结束执行 await 后,再继续下一步迭代。这个和我们的预期一致,for 循环里的 async/await 是顺序执行的;同理也适用于 while、for-in、for-of 等等形式中。

    之前有篇我的 blog 提到过 js 的异步发展史:从callback到promise再到async/await。async/await之后的 JS 开始允许我们以一种看似顺序执行的方式书写代码,这让入门 JS 变得更简单,但在一些复杂的场景里比如 for-loop 环境里,async/await还是会有不少坑的。

    Warm up

    开始前,先写个“菜篮子工程”,getVegetableNum是本文中最基础的一个异步函数——异步获取蔬菜数量:

    1. const Basket = {
    2. onion: 1,
    3. ginger: 2,
    4. garlic: 3,
    5. }
    6. const getVegetableNum = async (veg) => Basket[veg];

    知识点:async是一个语法糖,表示把结果包在 Promise 里返回;该异步函数等价于

    1. function getVegetableNum (veg) {
    2. return Promise.resolve( Basket[veg] );
    3. }

    OK,我们再试着异步获取三种蔬菜的数量:

    1. const start1 = async () => {
    2. console.log('Start');
    3. const onion = await getVegetableNum('onion');
    4. console.log('onion', onion);
    5. const ginger = await getVegetableNum('ginger');
    6. console.log('ginger', ginger);
    7. const garlic = await getVegetableNum('garlic');
    8. console.log('garlic', garlic);
    9. console.log('End');
    10. }

    最后打印结果如下:

    1. Start
    2. onion 1
    3. ginger 2
    4. garlic 3
    5. End

    await in a for loop

    OK,前言到此为止。现实中开发中,上述代码枚举每一种蔬菜的方式太过冗余,一般我们更倾向于写个循环来调用getVegetableNum方法:

    1. const start = async () => {
    2. console.log('Start');
    3. const arr = ['onion', 'ginger', 'garlic'];
    4. for(let i = 0; i < arr.length; ++i>){
    5. const veg = arr[i];
    6. const num = await getVegetableNum(veg);
    7. console.log(veg, num);
    8. }
    9. console.log('End');
    10. }

    结果依旧,这说明在普通的 for 循环里,程序会等待上一步迭代结束执行 await 后,再继续下一步迭代。这个和我们的预期一致,for 循环里的 async/await 是顺序执行的;同理也适用于 while、for-in、for-of 等等形式中。...

    立即注册
    更新于:2024-10-06 22:42:32

    nodejs在后台运行和在win7命令行运行

    操作系统windows7

    运行cmd

    最简单的方法是node命令

    例如

    node test.js
    

    另外还可以用工具 pm2

    pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能

    在nodejs项目目录下运行

    npm i pm2
    

    操作方法

    pm2 start test.js // 启动
    pm2 start test.js-i max //启动 使用所有CPU核心的集群
    pm2 stop test.js // 停止
    pm2 stop all // 停止所有
    pm2 restart test.js // 重启
    pm2 restart all // 重启所有
    pm2delete test.js // 关闭
    

    这里我执行pm2 start test.js,程序会循环一直执行test.js,不知道为啥,我还是用node命令。 ...

    立即注册
    更新于:2022-04-28 15:35:40

    nodjs 运行npm install .. 时提示:npm WARN saveError ENOENT: no such file or directory, open \...\package.json 问题解决方法

    根据错误提示,是系统没有‘package.json’这个文件导致。这个文件的作用就是管理你本地安装的npm包。

    所以我们要生成一个package.json文件,执行命令:

    npm init
    

    创建package.json文件,系统会提示相关配置(可键入配置,也可直接按回车键,回车即设置默认参数),也可以使用命令:...

    立即注册
    更新于:2022-05-22 20:38:11

    windows安装Node.js及环境配置

    win7支持的最新版本是nodejs-v13.14.0,win8或者win10支持最新的nodejs

    一、安装环境######

    1、本机系统:Windows 10 Pro(64位)
    2、Node.js:v6.9.2LTS(64位)

    二、安装Node.js步骤######

    1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/
    2、选安装目录进行安装
    3、环境配置
    4、测试

    三、前期准备######

    1、Node.js简介
    简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。
    2、下载Node.js
    打开官网下载链接:https://nodejs.org/en/download/ 我这里下载的是node-v6.9.2-x64.msi,

    点击安装,点击下一步,直至安装完成,可以先进行下简单的测试安装是否成功了,如果提示无此内部命令,则重启电脑。后面还要进行环境配置。在键盘按下【win+R】键,输入cmd,然后回车,打开cmd窗口。输入 node -v 和npm -v

    此处说明下:新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西...

    立即注册
    更新于:2022-05-22 20:06:21

    centos8安装nodejs

    通过官方查询需要安装的版本

    https://github.com/nodesource/distributions

    在CentOS下获取相应版本的nodejs资源(以NodeJS 14.x为例)

    curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
    

    运行

    sudo yum install -y nodejs
    

    进行nodejs安装

    You may also need development tools to build native addons:

    sudo yum install gcc-c++ make
    

    To install the Yarn package manager, run:

    curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
     sudo yum install yarn
    

    确认安装成功

    node -v

    npm -v

    安装cnpm

    npm install -g cnpm -registry=https://registry.npm.taobao.org
    


    ...

    立即注册
    更新于:2022-04-27 22:31:42

    开篇 - 环境安装(@tensorflow/tfjs-node)

    安装这个花了老长时间了,网上的办法都测过了,不行, 还是自己研究!下面就是主要安装步骤

    (不详细的话,会补充)

    安装前提环境

    因为要安装 @tensorflow/tfjs-node 前需要一些C++库和python版本的支持 可以在 https://github.com/nodejs/node-gyp 网站中找到安装方法(用如下命令就可一键安装啦!) ...

    立即注册
    更新于:2023-11-29 00:52:32

    在Window上打开谷歌浏览器remote方式

    在Window上打开谷歌浏览器remote方式

    await opn("http://cn.bing.com",{app: ['chrome','--remote-debugging-port=1234']});

    在Window上打开谷歌浏览器remote方式

    await opn("http://cn.bing.com",{app: ['chrome','--remote-debugging-port=1234']});

    应用名称取决于平台。 不要在可重用模块中硬编码。 例如。 Chrome是OS X上的google chrome,Linux上的google-chrome和Windows上的chrome。...

    立即注册
    更新于:2024-06-23 00:26:12
    相关内容

    保险相关

    保险法律法规相关

    保险知识

    保险观察

    哪些人容易得肺癌?这5个真相,你一定要知道!

    哪些女性会比较容易患乳腺癌?

    哪些人容易得乳腺癌?更年期女性真的要当心!

    保险公司介绍

    销售保险产品的网站

    vps相关问题

    国外VPS性能比较,配置价格比较

    国外VPS网络状况比较

    不好用的VPS

    教育相关

    游戏相关内容整理

    健康相关内容整理

    全球死亡率最高的前二十种疾病(数据来源:世界卫生组织2018年)

    推荐内容

    分享几个好用的bt搜索bt资源下载网址网站

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享

    全网最新bt磁力搜索引擎bt资源bt网站网址分享

    人气美女女优百度指数排行榜(波多野结衣,苍井空,三上悠亚,深田咏美,桥本有菜,北条...

    最强人造人深田咏美,业界的社交女王

    人生起起落落的三上悠亚,成名前的清纯风,怎么搭配出来的?

    业内第一大长腿,桥本有菜的腿究竟有多长

    波多野结衣,岛国业界著作最多的超级劳模

    日本AV界NO.1,苍井空是多少宅男的疯狂?

    美女女优视频混剪 This Girl-Laza Morgan

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享