登录/注册

Node.js识别图片验证码

Node.js识别图片验证码
当我们使用无头浏览器做自动化爬虫时经常会处理到一些表单的自动填写,被爬取的网站当然也少不了验证码过滤,目前Web端常用的还是传统的图片验证码。我这里讲解一个Node.js识别图片验证码的Demo,是我在内蒙古高考报名志愿时候需要时候自动填写验证码时候做的测试。环境安装首先我们需要安装由Google开源的tesseract文字识别程序,下载地址,我用的是tesseract-ocr-setup-4.00.00dev.exe,下载后进行安装,直接一路Next就行,然后记住安装路径设置一下环境变量Windows搜索框搜索:查看高级系统设置,点击环境变量,设置名称

Node.js接收图片并上传至七牛云OSS

Node.js接收图片并上传至七牛云OSS
在使用Node.js机型服务端开发时,我们经常使用OSS来作为图床,文章讲解了使用Koa作为HTTP框架、使用七牛云OSS存储图片、使用multer接收图片的具体操作方法。定义路由Koa和Express在基本使用上没啥区别,本文以Koa为例。定义一个路由然后在index.ts中注册一下即可,非常简单。importRouterfrom"@koa/router";letrouter=newRouter();router.post("/static/:folder",asyncctx=>{ctx.body={key

Sequelize修改查询后的数据

Sequelize修改查询后的数据
在使用Node.js进行服务端开发时我们通常使用Sequelize作为ORM框架,同时使用TypeScript作为开发语言。在我们查询数据时,通常需要根据前端的参数来动态处理一些数据库查询出来的数据,这些处理无法通过模型中的get进行,只可以在路由函数中进行处理。很多开发者会选择直接遍历查询的rows进行属性的添加,但是如果使用了TypeScript会报错。这里举个例子。那我们应该怎么处理呢?可以在map中使用dataValues,直接修改dataValues的值来达到修改数据,但是这样不够灵活,并且使用TS进行开发时有报错。我没有在模型中定义user_

React父组件调用子组件的方法

React组件化开发中子组件可以通过传递变量或者父组件的方法来实现和父组件的通信或者调用函数传值,但是父组件如何调用子组件的方法呢?很多介绍Hooks的文章并没有讲到useImperativeHandle,我以使用React18+TypeScript开发的项目为例,组件使用Hooks。以下是我精简过后的代码。父组件:import{useState,useEffect,useRef}from"react";import{Button}from"antd";importAddTypeModal,{event}from"

Functions are not valid as a React child. This may

Functions are not valid as a React child. This may
这种情况主要发生在React-RouterV6的Route定义中,或者组件的加工与使用。根据报错信息我们可以得知我们需要使用<Component/>的方式进行组件的使用,而不是Component,这样的话React会认为我们在调用函数,而不是使用组件。如果你是在RouterV6定义路由时发生的报错,应该参考以下代码:<Routepath="/"element={<Index/>}/>而不是:<Routepath="/"element={Index}/>//React会认为你传递了一个函数当然在其他时候使用也是一样的,如果参数需要你传递组

axios封装错误请求函数

在使用axios作为请求工具时我们通常不在catch中对错误操作进行处理,我们可以将请求错误的操作放在响应拦截器中进行,日常开发只需要在then做业务即可。先定义错误代码对应的返回提示constErrorCodeMessage={200:"服务器成功返回请求的数据。",201:"新建或修改数据成功。",202:"一个请求已经进入后台排队(异步任务)。",204:"删除数据成功。",400:"发出的请求有错误,服务器没有进行新建或修改数据的操作。",401:"用户没有权限(令牌、用户名、密码错误)。",

TypeScript增量编译

我们在使用Node.js开发服务端时通常会使用TypeScript来开发大型项目,但是使用ts-node进行全量编译时经常遇到编译速度慢的问题,通常是修改一行代码编译两分钟。这时我们需要使用增量编译来优化编译速度,及其他的文件在项目启动时进行全量编译,开发时修改了哪个TS文件就编译成对应的JS文件。开发环境1.修改tscon.json文件{"compilerOptions":{"watch":true}}在ts配置中开启watch监听rootDir路径下的全部ts文件(文章末尾会有我的tsconfig.json)2.编写程序编

TypeScript中使用类型别名

TypeScript中使用类型别名
在很多打包工具或者使用cli创建的项目中都会提供类型别名,例如Vue-cli中使用@可以代表绝对路径src。但是在使用TypeScript开发Node.js项目中却没有这个选择,当然我们可以在tsconfig.json中设置path参数,但是这个只是路径不报错和有利于路径提示,在ts-node运行时还是会报错,社区中提供了一个叫typescript-paths的插件来解决问题,但是这个插件对增量编译非常不友好(ts在项目大了之后全量编译随便改一点就要等2分钟),对此我们可以使用插件module-alias来解决。1.首先我们依然是在tsconfig.js