
nodejs
ISaiSai
这个作者很懒,什么都没留下…
展开
-
SyntaxError: Unexpected number in JSON at position 1
SyntaxError: Unexpected number in JSON at position 1javascript JSON序列表,key 是int类型的时候,出错处理方法,使用正则表达式,将int类型的key 替换成字符串var a ="{2:\"全天\",7:\"测试\",8:\"1天\",9:12,10:14}";var x = a.replace(/(\d+):/g,"...原创 2019-03-12 14:35:20 · 13097 阅读 · 0 评论 -
nodejs co-sleep 使用
co-sleep 可以在co 中模拟 sleep 的动作var co = require("co");var sleep =require("co-sleep");co(function * (){ console.log("hello world"); yield sleep(1000); console.log("sleep end");})console.lo转载 2017-07-24 11:00:46 · 1108 阅读 · 0 评论 -
nodejs Assignment to constant variable
const a =1;a=2;js 修改了const常量 则会抛出Assignment to constant variable原创 2017-06-28 14:22:10 · 4621 阅读 · 0 评论 -
nodejs 4.x 升级到 6.x 动态编译参数差异
module 的_compile 4.x 只有一个参数,就是代码,第二个路径参数不传递,底层会容错,使用当前路径”.”(就是一个点)6.x 必须两个参数,第一个是代码,第二个是路径,不传递路径会报错 底层代码如下:function assertPath(path) { if (typeof path !== 'string') { throw new TypeError('Path原创 2017-06-15 10:06:39 · 933 阅读 · 0 评论 -
nodejs 动态加载模块 _compile
通过如下代码 ,使用 Module 的私有函数_compile ,可以动态的加载一个模块var Module = module.constructor;var m = new Module();var code = 'module.exports = function () {console.log("abc");}'; m._compile(code, 'first.js');var a原创 2017-06-15 09:48:13 · 6486 阅读 · 1 评论 -
draft js 服务端node 执行
draftjs 的绘制转换本身是在 浏览器中执行的,如果希望服务端进行执行相关方法,需要模拟一个dom 环境,如下DEMO 中使用了 jsdom 进行模拟var React = require('react');var ReactDOMServer = require('react-dom');var { ContentState,convertToRaw,convertFromHTM原创 2017-06-14 17:30:03 · 981 阅读 · 0 评论 -
node 服务端绘制 react 入门
如果有react 的模板,希望需要通过node 在服务端绘制,可以使用如下简易代码index.js 代码如下,包含定义react 组件,之后输出绘制结果var React = require('react');var ReactDOMServer = require('react-dom/server');class MyComponent extends React.Component {原创 2017-06-14 16:05:04 · 516 阅读 · 0 评论 -
undefined symbol: node_module_register 错误原因
场景:使用sudo node xxx 执行一个命令的时候报告 undefined symbol: node_module_register环境:使用了nvm 安装了高版本的node (原始版本在/usr/bin/node 下是低版本的 0.10.x)原因:node 低版本0.10.x 没有 node_module_register 当使用sudo 命令的时候,用的不是 nvm 版本 ,而是/usr原创 2017-06-24 19:33:38 · 2677 阅读 · 0 评论 -
nodejs 使用assert做参数验证
nodejs 自带assert 模块,一般用来做单元测试, 但也可以直接用在项目做,做参数验证,参数不符合要求直接抛出异常,比较方便const assert = require("assert");function sayHi(msg) { assert(msg.length > 10, "长度必须大于10"); console.log("hi " + msg);}sayHi转载 2017-07-11 11:44:29 · 1168 阅读 · 0 评论 -
Object.assign 深层次合并
Object.assign 只能进行第一级层次的拷贝 如下代码:var a = {b: {x: 1, z: 3}}var b = {b: {x: 1, y: 2}}console.log(Object.assign(a, b))将得到 { b: { x: 1, y: 2 } } 期望得到 { b: { x: 1,z:3, y: 2 } }此时需要使用到 lodash的merge方法原创 2017-07-11 10:56:51 · 4038 阅读 · 0 评论 -
nodejs 类型判断 工具包 util.is***
node util 包中带有is*** 的工具函数,用来进行类型判断var util = require("util");console.log(util.isString("a"))console.log(util.isArray([]));console.log(util.isFunction(function(){}));console.log(util.isNumber(1));转载 2017-07-11 10:36:08 · 1753 阅读 · 0 评论 -
node mocha 单元测试debug
使用mocha 进行单元测试的时候不通过,找不到原因需要调试,操作方法如下 1. 全局安装 node-inspector 2. 运行 mocha test.js –debug-brk(debug-brk将断点到第一行代码) 3. 运行 node-inspector (会自动打开浏览器 http://127.0.0.1:8080/?port=5858) 4. 可以看到 代码已经断点到了转载 2017-06-07 14:28:30 · 1743 阅读 · 0 评论 -
nodejs base64 编解码
参考文档 https://stackoverflow.com/questions/6182315/how-to-do-base64-encoding-in-node-js直接使用 buffer 已经对字符串进行 base64 编解码var a ='hello world';var x = new Buffer("Hello World 你好世界").toString('base64')c原创 2017-05-25 11:38:10 · 2291 阅读 · 0 评论 -
react classnames
安装: npm install classnames功能: 将true的class 显示出来,false 的隐藏 参考文档:https://manofhustle.com/2015/01/19/dynamically-add-classes-react-classset/demo:var classNames = require('classnames');var HelloWorld原创 2016-12-18 20:28:57 · 3956 阅读 · 0 评论 -
generator 转 promise
通过co 进行转化co(function* () { //xxxxx });原创 2016-12-09 11:32:25 · 586 阅读 · 0 评论 -
nodejs取得当前执行路径
process.cwd() 当前执行程序的路径(执行命令行时候的路径,不是代码路径 例如 在根目录下执行 node ./xxx/xxx/a.js 则 cwd 返回的是 根目录地址 )__dirname: 代码存放的位置process.execPath: 当前执行的node路径(如:/bin/node)DEMO:console.log(process.execPath)co原创 2016-12-03 10:09:30 · 42467 阅读 · 0 评论 -
nodejs 注入 inject
当有些对象需要根据条件不同注入的时候,可以简单使用注入 如下例:根据配置不同创建不同的USER对象,注入到 tool.do 方法中,从而实现不同的效果index.js 主函数var tool = require("./tool.js");// 此处是配置,根据配置决定 注入的是什么var config = "Man";if (config === "Man") { var USER原创 2017-07-24 11:57:07 · 3686 阅读 · 0 评论 -
nodejs 主子进程通信
参考文档http://blog.fens.me/nodejs-core-cluster/var cluster = require('cluster');var http = require('http');var numCPUs = require('os').cpus().length;if (cluster.isMaster) { // 主进程 var wk = clu转载 2017-07-24 18:26:32 · 2545 阅读 · 1 评论 -
nodejs使用domain捕获工作进程异常
domain 可以提前捕获到异常,从而使得 process 工作进程不崩溃var cluster = require('cluster');var http = require('http');var numCPUs = require('os').cpus().length;var domain = require('domain');if (cluster.isMaster) {转载 2017-07-24 18:57:24 · 947 阅读 · 0 评论 -
node -e 参数
https://nodejs.org/api/cli.html#cli_e_eval_scriptEvaluate the following argument as JavaScript. The modules which are predefined in the REPL can also be used in script.On Windows, using cmd.exe ...翻译 2018-07-27 17:26:49 · 2263 阅读 · 1 评论 -
moment 当前时间取整
可以将当前时间的时分秒毫秒设置为0 取得当天00:00:00 的时间moment.clone().set({hour:0,minute:0,second:0,millisecond:0})原创 2018-05-08 16:09:55 · 7782 阅读 · 0 评论 -
moment getTime
// 如下返回truenew Date().getTime() == moment().valueOf();如果需要转化为Date()类型 如下结果返回truemoment().toDate().getTime()== new Date().getTime()原创 2018-05-04 17:23:45 · 4133 阅读 · 0 评论 -
node 使用long 类型
当有非常长的数字时候,node 会丢失精度,需要使用longnpm install long使用demovar Long = require("long");var longValueToB = Long.fromString("1152921517493863811", true);console.log(longValueToB.and(3).toString())参考...原创 2018-05-10 15:14:57 · 4878 阅读 · 0 评论 -
koa 使用 decorator
在使用koa 开发网站的过程中期望使用decorator ,进行日志记录 通过babel-register + 安装npm install --save babel-plugin-transform-decorators-legacy.babelrc{ "plugins": ["transform-decorators-legacy"]}入口文件引入babel...原创 2018-02-12 15:54:08 · 1475 阅读 · 0 评论 -
NODEJS 的面向方面编程 shimmer
nodejs 有时候需要打日志,做权限验证等工作,如果希望在不修改原有代码情况下,做这些工作,可以使用shimmer https://www.npmjs.com/package/shimmervar Calculator = require('./calculator');var shimmer = require('shimmer');shimmer.wrap(Calculator原创 2018-01-26 16:27:02 · 745 阅读 · 0 评论 -
使用 NIM调试Nodejs 代码
查看了nodejs 的官方文档中,调试nodejs 推荐使用的是Chrome DevTools + NIMNIM插件地址:https://chrome.google.com/webstore/detail/nim-node-inspector-manage/gnhhdgbaldcilmgcpfddgdbkhjohddkj 插件会自动监听9225端口,当监听到有调试代码执行的时候,会自动原创 2018-01-23 14:54:37 · 2072 阅读 · 0 评论 -
nodejs 下载网络文件 使用request
var request = require('request');var fs = require('fs');request.post('https://download.site.com', { form: { param:"param" }}).pipe(fs.createWriteStream('./azip'))原创 2017-12-13 17:12:51 · 5183 阅读 · 0 评论 -
node中的 await async 入门
await async ES7 中新增的, NODE 7.5 及以后支持,以前的需要使用babel-registerfunction myP(val) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(val) }, 5原创 2017-11-14 12:00:05 · 722 阅读 · 0 评论 -
node Unexpected token import
node 目前默认不支持es6 的模块 import解决方法有2方法1 experimental-modules升级node 8.5 使用 experimental-modules,参数。切要求所有文件名后缀都要修改为mjs node –experimental-modules index.mjs index.mjsimport {add} from './calculator.原创 2017-11-13 19:07:33 · 3822 阅读 · 1 评论 -
nodejs extend包
Object.assign只能实现后面对象的第一级属性拷贝的前面的对象中,如果需要深度拷贝属性,需要依赖extend包 参考文档https://github.com/justmoon/node-extendnpm install extend如下将输出 {“userName”:{“first”:”C”,”second”:”B”},”age”:2}const extend = require(转载 2017-09-11 17:04:02 · 4085 阅读 · 0 评论 -
Nodejs Error: Cannot find module 当前文件夹下的模块
当执行如下代码是,nodejs 报错 Cannot find module(a.js 为当前文件夹下的同级文件)var x = require("a.js") 修改为 ./ 后正常var x = require("./a.js") 或者执行node命令入口时添加 (index.js 为主入口文件)NODE_ENV . node index.js主要目的:将当前文件夹”.” 添加到node 查找模块的转载 2017-09-11 16:44:55 · 5412 阅读 · 0 评论 -
nodejs gzip 解压缩base64
zlib 是nodejs 自带的,可以直接使用 如下代码将base64的gzip 压缩,解压出来const zlib = require('zlib');var buffer = new Buffer('H4sIAAAAAAAAAIuOBQApu0wNAgAAAA==', 'base64');zlib.unzip(buffer, function(err, buffer) { if (!原创 2017-09-27 07:59:09 · 3824 阅读 · 0 评论 -
nodejs mac 下打开浏览器,并访问特定网页
require('child_process').exec('open http://www.baidu.com');原创 2017-07-24 22:17:13 · 2132 阅读 · 0 评论 -
nodejs debug 模块使用
当需要输出程序信息的时候,一般使用console.log 打出信息日志,当上线前再将这些代码删除,不方便可以通过debug模块来动态配置输出内容进行测试,上线也不用删除如下index.js 测试代码var debug = require('debug')('test');debug("1234");当需要输出信息的时候,带上DEBUG=test DEBUG=test node index.js则会原创 2017-07-24 21:39:56 · 1674 阅读 · 0 评论 -
nodejs 简易守护进程
正常情况下 进程出现未捕获异常时候,会退出, 但有时候当工作进程比较重要,出现异常时候希望能够重启一个新进程继续工作,这时需要使用到守护进程主要逻辑:主进程监听子进程的exit 事件,当子进程exit的时候,重新fork一个新的工作进程var cluster = require('cluster');let index = 0;if (cluster.isMaster) { var wo原创 2017-07-24 20:52:26 · 1830 阅读 · 0 评论 -
nodejs 监听端口报错 Error: listen EACCES
原因监听 1024 以下端口 需要sudo权限否则报 listen EACCES 错误转载 2016-08-13 15:13:52 · 10346 阅读 · 0 评论 -
ES6 原生promise 与 Q的比较学习
一个promise是一个带有”.then()”方法的对象,主要解决 多级嵌套异步回调问题。比较总结:ES6原生比使用Q 更加简单直接原生ES6 :console.log("start");var delay1 = new Promise(function(resolve,reject){ setTimeout(()=>resolve("abc") ,2000)});delay1.t原创 2016-08-13 11:41:49 · 1560 阅读 · 0 评论 -
nodejs http 异常HPE_CB_body HPE_CB_headers_complete
HPE_CB_body,HPE_CB_headers_complete原创 2015-10-27 00:06:38 · 1932 阅读 · 0 评论 -
nodejs 捕获未处理异常
nodejs 捕获异步未处理异常处理比较麻烦简单的方法是监听全局的process 的uncaughtException 进行处理process.on('uncaughtException', function (err) { console.error('An uncaught error occurred!'); console.error(err.sta转载 2015-09-14 12:18:41 · 4596 阅读 · 0 评论 -
promise.all 异常处理
promise.all 中任何一个promise 出现错误的时候都会执行reject异步错误promise 无法捕获,可以通过try catch 捕获后调用reject同步异常会自动调用reject(例如将setTimeout 修改为setTimeoutXXXXX)resolve 函数中出现的同步错误也会调用rejectvar p1 =new Promise(functi原创 2015-09-14 11:33:24 · 16508 阅读 · 1 评论