• 分类:【Nodejs
  • 浏览【112】
  • 评论【0】
  • 更新【2018-9-04 14:57:38】

无法重新声明块范围变量“onerror” 解决办法:打开tsconfig.json中的"lib": ["es2015", "es2016", "es2017"]

阅读全文
  • 分类:【Nodejs
  • 浏览【1557】
  • 评论【0】
  • 更新【2018-3-02 11:25:51】

nodejs中经常使用到环境变量,最常见的如:process.env.NODE_ENV,可以配置环境变量,可以临时设置 *nix:export NODE_ENV=development&& node app.js win:set NODE_ENV=development&& node app.js 一般是作临时变量在系统启动时设置,不影响其他系统,也可同时运行开发环境和生产环境,只需要根据process.env.NODE_ENV来运行不同逻辑即可,而设置环境变量在pm2中可以轻松实现 pm2 start pm2.json --env production -

阅读全文
  • 分类:【Nodejs
  • 浏览【1685】
  • 评论【0】
  • 更新【2018-1-25 17:49:36】

pm2介绍 pm2是nodejs进程管理工具,现在基本是node生产服务器的标准选择,可以帮助我们实现node多进程服务,开启的多个实例自动实现负载均衡。 最重要的是保证node单进程不会因为错误退出,作为守护进程保证nodejs服务不宕机。 总体来说就是有性能监控、自动重启、负载均衡的作用。 pm2-logrotate介绍 pm2本身是可以输出日志文件的,默认的文件路径: error log path │ /home/username/.pm2/logs/app-error-0.log out log path │ /home/username/.pm2/logs/app-o

阅读全文
  • 分类:【Nodejs
  • 浏览【1266】
  • 评论【0】
  • 更新【2018-1-17 22:21:51】

pm2的fork模式和cluster模式的区别 fork模式 pm2默认启动的是fork模式,是以单核单进程运行的,在fork模式下可以直接运行coffee-script,PHP,python。 参考:http://pm2.keymetrics.io/docs/tutorials/using-transpilers-with-pm2 cluster模式可以根据CPU数量进行实例扩展,可以开启多进程而不需要修改代码。可提高程序性能和可靠性。类似于分布式系统,只不过是在单台机器上开启多实例,而pm2自带负载均衡。 ** 使用方法 ** pm2 start app.js -i max 使用-i参数

阅读全文
  • 分类:【Nodejs
  • 浏览【589】
  • 评论【0】
  • 更新【2017-11-11 18:48:56】

Assistance.belongTo(User)会报以下错误: ALTER TABLE `assistance` ADD CONSTRAINT `assistance_user_id_foreign_idx` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE; Unhandled rejection SequelizeDatabaseError: Can't write; duplicate key in table '#sql-454_d' at Quer

阅读全文
  • 分类:【Nodejs
  • 浏览【471】
  • 评论【0】
  • 更新【2017-10-28 23:28:40】

从图片中的代码可以看出 let userRecord = await item.getUser();获取到的是Bluebird<UserInstance | null>类型,然后在下面获取对象属性的时候报错,错误信息是: [ts] Object is possibly 'null'. let userRecord: UserInstance | null 说对象可能是null,所以无法获取其中的属性。遇到这种情况请设置typescript的编译选项,tsconfig.json文件中的 "strictNullChecks": true, /* Enable s

阅读全文
  • 分类:【Nodejs
  • 浏览【1445】
  • 评论【0】
  • 更新【2017-10-21 10:34:33】

定义Model的时候有这样两个参数: underscored,underscoredAll, Converts all camelCased columns to underscored if true. Will not affect timestamp fields named explicitly by model options and will not affect fields with explicitly set field option 其意思是说转化所有驼峰字段为下划线字段,但实际情况并不是如此。 var Model = sequelize.define( 'A

阅读全文
  • 分类:【Nodejs
  • 浏览【914】
  • 评论【0】
  • 更新【2017-8-23 11:20:12】

Unhandled rejection CastError: Cast to ObjectId failed for value "catalog" at path "_id" for model "Blog" at MongooseError.CastError (e:\workspace\yuedun_ts\node_modules\mongoose\lib\error\cast.js:27:11) at ObjectId.cast (e:\workspace\yuedun_ts\node_modules\mong

阅读全文
  • 分类:【Nodejs
  • 浏览【2521】
  • 评论【0】
  • 更新【2017-7-13 14:24:58】

sequelize提供了批量插入数据的方法:Model.bulkCreate([…object])。 User.bulkCreate([ { username: 'barfooz', isAdmin: true }, { username: 'foo', isAdmin: true }, { username: 'bar', isAdmin: false } ]).then(() => { // Notice: There are no arguments here, as of right now you'll have to... return User.findAll()

阅读全文
  • 分类:【Nodejs
  • 浏览【571】
  • 评论【0】
  • 更新【2017-5-17 22:31:08】

nodejs中promise的if流程控制 Promise虽然解决了原生回调的金字塔写法,但是并不能很好的处理if else流程,相比起Java等同步方式编写还是有点难度,不过还是有方法写出优雅的代码。 下面用了一个不复杂的例子来说明: 假设一个人去银行开户,存钱,如果这个人是普通用户,需要先1.排队等候,2.开户,3.存钱。 如果是VIP用户,直接进行第2,3步操作。 如果普通用户是黑名单用户不给开户办卡。 var fs = require("fs"); function queue(){ return new Promise((resolve, reject)=>{ fs.re

阅读全文