之前用node.js写的订餐系统,很容易挂掉,一直也没想去解决它。今天看了一下,试了试,原因是在连接数据库的时候没有对error事件进行处理,导致程序一直挂在那里,需要重启服务才能正常使用。...在getConnection函数中添加了对error事件的监听,能避免掉这个问题 ?...参考: 在Node.js使用mysql模块时遇到的坑 Reproduce MySQL error: The server closed the connection (node.js)
前言 最近在写毕设,采用的是学弟+自己的技术栈,运用Vue3+ElementPlus搞前端,Node.js express做后端,毕竟,java那东西确实不在我技术栈里。...于是乎,我抱着能CV就不要自己敲的心态,前去了某C站,C回了一个封装好了看上去存在可用性的基础sql模块,结果,踩了大坑。...痛定思痛,我采用了学弟+腾讯会议的debug方式,于事发当天下午,花费了一个小时,成功搭建出了一个简单易用,小学难度的一个操作数据库的小模块。 不就是毕设嘛? 一百公里费两个学弟! 嘎嘎好用!...正文 项目目录 只是单独把数据库模块拎出来了 ├─index.js ├─db | ├─db.js //封装的操作函数 | ├─dbconfig.js //数据库配置 | └sql.js //sql语句...,为了怕bug,将传入的对象给他变成一个数组返回回去 示例:mysqljs-https://github.com/mysqljs/mysql#custom-format let paramList =
Node.js工具模块 node工具模块分为OS,Path, Net, DNS, Domain模块 OS 字节顺序 字节顺序,称为端序和尾序,是跨越多字节程序对象的储存规则 如果最低有效位在最高位的前面...下一个字节储存在后面的地址处(即跟高的内存地址) 小端序 反过来即可 Path模块 Domain模块 简化代码的异常处理 该模块,将多个处理的模块分为一组,然后进行处理 隐式绑定:把在上下文中定义的变量...node main.js 监听器处理错误通过监听器来处理 events.js:167 throw er; // Unhandled 'error' event ^ Error...:266:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3) Emitted 'error' event at:...at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3) PS C:\Users\mingm\Desktop\test>
path模块,其实还是在webpack中用过一下下,至于node,还没开始用。这个模块算是基础,当作是预习一下。 path模块方法还是有几个的,这边只学习几个认为有必要、能用到的几个方法。...开始之前先看看两个输出: console.log(__dirname); E:\mydata\project\bootstrap\html\coding dirname翻译过来是目录名,表示当前js所在文件夹的绝对路径...console.log(__filename); E:\mydata\project\bootstrap\html\coding\node-path.js 表示当前js所在的绝对路径与文件名 一个是文件夹...引入path模块都一样: let path = require('path'); path.resolve: webpack配置output的时候使用过,相当于cd命令: console.log(path.resolve...大概就这几个了,path模块还有好几个方法,比如delimiter、format、isabsolute、posix等,要是真遇见一些场景需要可以查文档。 (完)
url模块初始:url是node提供的网址服务的一个模块!使用可以快速进行相对应的模块分析! 实例代码!...//引入模块 const http=require("http"); const url=require("url"); const hostname="127.0.0.1"; const port=3001...function(req,res){ res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"}); //url.parse()可以将一个完整的URL...path.port); //.protocol返回一个http协议 console.log("请求网站主机端口号: control"+ path.protocol); //.href返回一个完整的url...下面是一个完整的url模块进行对比使用 ┌────────────────────────────────────────────────────────────────────────────────
我们可以看到很多前端javascript库是支持订阅发布模式,但Node.js是内建的。 有一个重要的问题:你为什么要使用事件模式?因为在Node.js里,他可以替代各种深层嵌套的加调。...EventEmitter内部模块 由于EventEmitter类只是普通的javascript,它非常有意义,它可以在其实模块中使用,在你的javascript模块,你可以创建EventEmitter实例...这很简单,更有趣的是,是创建继承自EventEmitter一个模块,所以我们可以使用公共API实现部分功能。 其实,有内置的Node模块做的正是这一点。...例如,HTTP模块,这是用来创建web server的一个模块。下面的示例是展示EventEmitter类的on方法如何成为http.Server类的一部分。...如果你不熟悉Node.js模块,这简单介绍他们是如何工作的:这个文件里面的任何JavaScript是只可读的,默认情况下。
request模块让http请求变的更加简单。...更多使用方法和说明可点击这里继续阅读:https://github.com/mikeal/request/ 这里写了一个很简单的示例,用来抓取去哪儿网的酒店查询数据(获取酒店某一时间段内各房型的价格排名...,想知道自己在网站上提供给客户的价格的竞争力: 1、如果提供的价格过低,自己赚到的钱就会少了,所以如果自己价格是最低了,就需要看第二低是多少,然后决定是否调整; 2、如果提供的价格过高,那么被搜索出来的排名结果就比较靠后...,没什么客户来预订酒店,业务就没有了 因为做的酒店预订业务很多,比如超过2千家以上,如果一个一个依赖人工去查询排名就比较被动,而且很难再做大,所以他的这个需求我分析了一下是可行的,而且可以做成一个很好的实时预警系统...这样才能保障利润最大化,提高销售、客户部门的工作效率,加快酒店的合作数量和公司的人员扩张: 1、不亏本,亏本的买卖不做; 2、如果发现提供的价格过低或是过高,需要支持调用平台的api接口,直接修改价格;
Node.js 的的核心模块 Node为JavaScript提供了很多服务器级别的API,这些API绝大多数都被包装到了一个具名的核心模块中了。...例如文件操作的fs核心模块,http服务构建的http模块,path 路径操作模块、os 操作系统信息模块等 以后只要说这个模块是一个核心模块,就要马上想到如果想要使用它,就必须: var fs = require...(‘fs’) var http = require('http') 在node中文网就可以找到这些模块:http://nodejs.cn/api/ 案例:获取OS的一些信息 // 用来获取机器信息的 var...os = require('os') // 获取当前机器的 CPU 信息 console.log(os.cpus()) 出现了八个模块,代表是八核 ?...上面的单位是字节,除以1024,约等于8G内存大小 案例:获取用来操作路径的信息 // 用来操作路径的 var path = require('path') // 获取一个路径中的扩展名部分 console.log
cross-env 是运行跨平台设置的和使用环境变量(Node中的环境变量)的脚本。...例如,如果你希望在 Windows 中使用命令NODE_ENV=production 来设置环境变量的话,大多数Windows 命令提示符都没有办法进行操作。...针对不同的操作系统环境 windows set NODE_ENV=production linux export NODE_ENV=production 同样的意思,如果我们需要根据不同的操作系统进行不同的设置的话是不是非常麻烦呀...安装 如果你在使用的时候遇到了: > Code@1.0.0 dev /home/vagrant/Code > cross-env NODE_ENV=development webpack --progress...https://www.ossez.com/t/node-cross-env/13733
每个.js自定义模块中都有一个module对象,它里面存储了当前模块有关的信息。 module.exports和exports是同一个对象。 最终都是module.exports指向的对象。...//每个.js自定义模块中都有一个module对象,它里面存储了当前模块有关的信息。...\\6,模块化\\node_modules', 'E:\\node.js教学\\node_modules', 'E:\\node_modules...外界用require()方法导入自定义模块时,得到的就说module。exports所指的对象 * */ module和module.exports的使用误区。...时刻谨记:require() 模块时,得到的永远时module.exposts指向的对象。
Node中的模块系统 使用Node编写应用程序主要就是在使用: EcmaScript语言 和浏览器一样,在Node中没有Bom和Dom 核心模块 文件操作的fs http服务操作的http url路径操作模块...path路径处理模块 os操作系统信息 第三方模块 art-template 必须通过npm来下载才可以使用 自己写的模块 自己创建的文件 什么是模块化 文件作用域(模块是独立的,在不同的文件使用必须要重新引用...)【在node中没有全局作用域,它是文件模块作用域】 通信规则 加载require 导出exports CommonJS模块规范 在Node中的JavaScript还有一个重要的概念,模块系统。...得到被加载模块中的exports导出接口对象 导出exports Node中是模块作用域,默认文件中所有的成员只在当前模块有效 对于希望可以被其他模块访问到的成员,我们需要把这些公开的成员都挂载到exports...,所以Node为了简化代码,就在每一个模块中都提供了一个成员叫exports exports === module.exports结果为true,所以完全可以exports.xxx = xxx 当一个模块需要导出单个成员的时候必须使用
Events是Node最重要的模块,它提供了一个对象events.EventEmitter,EventEmitter 的核心是事件发射与事件监听器。...Node.js中大部分的模块,都继承自Event模块。 EventEmitter 支持若干个事件监听器,当事件发射时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。...事件模块相关的方法主要有以下这些: 1. EventEmitter.on(event, listener) 注册监听事件。...触发指定的监听事件。...参数1:event 事件名; 参数2:[arg1] 可选参数,按顺序传入回调函数的参数; 返回值:该事件是否有监听; // 调用events模块,获取events.EventEmitter对象 var
前情回顾 上篇文章主要分享了的一个commonJS规范的问题,那么今天接着昨天的话题继续聊一聊nodejs的模块儿查找机制 Node模块儿 在Node中引入模块,大致会经历这么几个过程: 路径分析 文件定位...编译执行 在Node中,模块儿可以分为两大类,一类是Node提供的模块成为核心模块;另一类是用户编写的模块,成为文件模块。...核心模块在Node源码编译的过程中,编译进了二进制执行文件中。...当Node进程启动时,核心模块儿会直接被加载到内存中,所以核心模块引入时,文件定位和编译执行这两个步骤可以忽略掉,并且在路径分析中会优先判断,所以核心模块的加载速度是最快的。...这类模块查找是最慢的,具体过程是这样的:当前目录的node_modules文件夹-->父目录下的node_modules文件夹-->递归查找父目录的node_modules-->直到根目录下的node_modules
在写一个工具的时候,需要将xml转为json方便处理,以前电脑上装的node.js的版本为0.8,结果我再安装node-xml2json时提示版本过低,然后我又重装安装了最新版本。...然后再次尝试安装,首先报python版本不对,不支持3.0,然后再降级,再然后说windows系统需要先安装node-expat,装这个模块又需要先装node-gyp,好吧然后我一直安装失败… ?...最后我使用了这个模块: node-xml2json 根据thomasfrank大师写的 XML to JSON 改造的,唯一要注意的是如果xml中的节点属性有大写,转换之后全部成小写了。...工具写完了,使用了几个模块,觉得这几个模块都还很不错,有需要的同学可以自取:) 1、node-ftp 操作ftp,上传、下载文件。...4、node-xml2json
作者 | uerwtoy 来源 | yq.aliyun.com/articles/717323 前段时间,公司的洋彬哥老哥遇到一个问题,大概就是本机有个node的http服务器,但是每次请求这个服务器的端口返回的数据都报错...,但是node到底是如何通过在子进程中createServer并且listen但是只在父进程中真的监听了该端口来实现这个逻辑的呢?...从net模块出发 按理说,这个问题我们应该直接通过cluster模块来分析,但是很明显,在加载http模块的时候并不会像cluster模块启动时一样通过去判断NODE_ENV来加载不同的模块,但是从上面的分析...,我可以得出子进程中的createServer执行了跟父进程不同的操作,所以只能说明http模块中通过isMaster这样的判断来进行了不同的操作,不过http.js和_http_server.js中都没有这个判断..._extend({ cmd: 'NODE_CLUSTER' }, message); 通过Node的文档,我们可以知道这种cmd带了Node字符串的包,父进程会通过internalMessage事件来响应
前言 我是歌谣 今天给大家带来的是关于node中http模块的一个讲解 案例1 const http=require("http") //创建服务器 http.createServer(()=>{...200:404 } 运行结果 点个在看你最好看 下方查看历史文章 ES6模块化探究tab切换新模式 ES6模块化探究tab切换 ES6模块化开发计算器 vue2+element环境搭建利用xlsx
互联网的时代,用户个人信息数据泄露的情况屡屡发生,我们不得不重视数据的安全。而Node中的crypto模块为我们提供了数据加密的功能,下面简单介绍下crypto的使用。...hash ---- 通过hash算法将原始数据加密为二进制值,原始数据不同,加密的结果肯定不同,而且过程不可逆,也就是说不能解密,一般用于登录验证等场景。...hash算法有很多种,但是md5存在被攻破的风险,sha1近日也被Google的安全团队攻破,因此不建议使用。...-- 与hash类似,加密数据且不可逆,但是除了要指定md5、sha1、sha256等算法外,还需要指定一个任意的字符串,由此生成加密的结果,这也就意味着比hash更安全。...、使用最频繁的加密解密,一般来说已经可以满足不少node开发数据安全的需求了(如果是银行金融等等安全性要求更高),除此之外还有签名、验证、DiffieHellman算法等等方面的内容,暂且不做介绍。
vm vm是node的一个核心模块,核心功能官方文档介绍是: The vm module provides APIs for compiling and running code within V8 Virtual...意思就是:vm可以使用v8的Virtual Machine contexts动态地编译和执行代码,而代码的执行上下文是与当前进程隔离的,但是这里的隔离并不是绝对的安全,不完全等同浏览器的沙箱环境。...2个: 环境隔离:因为node的js代码是单线程,在并发的场景下,需要考虑上下文的竞争和互相影响,直接使用vm,可以最小成本的解决这个问题。...vue ssr在2.3.0以前,就是用vm来做隔离的渲染的,但是也带来了性能的问题,具体可以查看文档的介绍。 动态执行字符串代码:这在某些需求场景下只能使用vm。...(当然eval的安全问题更大,这是另外的话题)。 maybe attackedvm也存在安全问题,对于执行外部的代码,可能引发安全问题。
前言 我是歌谣 今天给大家带来的是关于node中url模块的一个讲解 安装nodemon npm i -g nodemon 案例1 const http = require("http")...200:404 } 运行结果 点击上方蓝字关注我们 下方查看历史文章 node之http模块 ES6模块化探究tab切换新模式 ES6模块化探究tab切换 ES6模块化开发计算器
通过样例,让我们了解如何编写一个node的原生模块。当然,这篇文章还有一个目的,是为了方便以后编写关于node-gyp的文章,搭建初始环境。...基于node-addon-api 基于node-addon-api的nodejs插件,使用的是node的头文件:#include 。...(exports, "hello", Method); } NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize) binding.gyp { "targets..."scripts": { "build": "node-gyp configure && node-gyp build", "run:demo": "node index.js" }...>npm run run:demo > node-addon-demo@1.0.0 run:demo > node index.js world 附上GitHub地址:w4ngzhen/node-addon-demo
领取专属 10元无门槛券
手把手带您无忧上云