资讯专栏INFORMATION COLUMN

踩坑记[持续更新]

0x584a / 1157人阅读

摘要:解决的中只有一个生命周期的钩子也只有一句代码报错中的就是整个组建中的原来是写在了使用指令的后面所以此时还没有在组件中注册所以会报错误正确代码标题这是一段内容这是一段内容这是一段内容这是一段内容。

用于记录coding过程中遇到的比较难解决或者有意思的问题,包括前端/后端(Node/Db),会持续更新...

后端 Node redis集群模式下pipline报错(2019.3.14)

问题描述: 在redis集群模式下,使用pipeline操作不同key值会报错All keys in the pipeline should belong to the same slot

问题解决:

去了解一下redis集群的slot: 集群中每个节点有固定slot的数量,所有存储的key值经过hash计算后会存放到不同slot,也就是不同节点,所以在pipline时如果key值索引不在同一个slot,就会报上述错误

解决方式:如果不是同一类型的key值不要用pipline去操作,如果是同一类型,则用"{}"包裹住相同部分,因为这部分用于hash计算

例如:redis.pipline().set("cache1", 1).set("cache2", 2).exec() 改为 redis.pipline().set("{cache}1", 1).set("{cache}2", 2).exec()

原文档飞机票

eggjs修改文件reload问题(2017.8.30)

问题描述: 以开发环境启动项目,在修改文件后eggjs自动reload,但reload后所有请求都是pendding状态且所有log都是正常状态.

问题探索:

在eggjs的issue中发现了类似的问题,基本是修改文件后不能reload,需要crtl+c手动重启,解决方式基本是重新安装依赖,但一顿操作后仍然不行.

使用用脚手架新生成的项目仍然有这个问题

同事电脑上并没有出现这个问题

到官方issue提问,由于是个别现象大佬并不予解决

目前可以确定问题是由电脑造成的,且只有我出现了这个问题.既然没有现成的解决方法于是只有将希望寄托在了源码上.

解决问题:

在eggjs文档中可以发现负责reload的是cluster-reload模块,代码很简单,只有80+行,而且很容易读懂.

reset()中分别打印出newWorker(重启后新的work进程)和firstWorker(旧work进程)的状态,可以发现一切都是按照正常情况在进行,只不过在最后新的work进程莫名奇妙的是dead状态,且没有触发任何重启.

进行了一些尝试,最终有了一个成功的解决方案: 在cluster.fork()(fork新的work进程)前先firsterWorker.kill(KILL_SINGNAL)(杀死旧进程).

后记: 虽然没有找到真正的问题原因(还可以继续深挖)但解决了reload那个蛋疼的问题,但这种方法需要修改node_modules中的源码很不方便,而且只能用于开发过程中,生产环境中必须要优雅的推出进程.

Sequelize migrate changeColumn 问题

问题描述 修改字段类型报错cannot be cast to type integer
数据库:Postgresql
报错原因: 将字段的数据类型由STRING修改为INTEGER(完全按照文档写法queryInterface.changeColumn(tableName: String, attributeName: String, dataTypeOrOptions: Object, options: Object)),但通过Sequelize转换的sql语句存在问题,不适用于Postgresql,需要更改字段type的类型

解决问题

// 修改字段类型的代码应该为
queryInterface.changeColumn("table", "column", {
  type: "INTEGER USING CAST("column" as INTEGER)",
  allowNull: false,
})

issue详情

前端 Vuejs element-ui popover报错(2018.02.09)

报错内容: [Vue warn]: Error in directive popover bind hook: "TypeError: Cannot read property "$refs" of undefined"

代码


解决
Popover的directive中只有一个bind生命周期的钩子,也只有一句代码vnode.context.$refs[binding.arg].$refs.reference = el;,报错中的$refs就是整个组建中的refs,原来是写在了使用指令的后面,所以此时ref还没有在组件中注册,所以会报$refs undefined错误

正确代码


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19104.html

相关文章

  • 坑记[持续更新]

    摘要:解决的中只有一个生命周期的钩子也只有一句代码报错中的就是整个组建中的原来是写在了使用指令的后面所以此时还没有在组件中注册所以会报错误正确代码标题这是一段内容这是一段内容这是一段内容这是一段内容。 用于记录coding过程中遇到的比较难解决或者有意思的问题,包括前端/后端(Node/Db),会持续更新... 后端 Node redis集群模式下pipline报错(2019.3.14) ...

    ckllj 评论0 收藏0
  • Wepy-小程序坑记

    摘要:引言用过原生开发的小程序也知道除了其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的我就入坑鸟。。。开发还是和部分有出入,因此如下记录,入手的教程就不发了只发踩坑。 引言 用过原生开发的小程序也知道除了api 其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的wepy我就入坑鸟。。。这么一个跟vue的开发方式类似的框架,不过说起来跟vue...

    tinna 评论0 收藏0
  • Notadd 2.0 全新 Node.js 版本~ (开发中) [从 PHP 到 node 的坑记

    摘要:有着最全的协议支持,同时有各种非阻塞拓展,可以说是最符合要求的,但是异步需要对做很大的改动。的计划将基于开发,同时也提供一些无法提供的功能和特性。 一点小遗憾 对于 Notadd 我们本来期望它实现更多... 尽管我们也尝试做了很多努力,但是由于 PHP 本身的局限,以及考虑到开发环境配置的复杂程度,最终使用了折中方案。接下来,我们谈谈整个技术选型历程,也供今后相关开发者做借鉴和参考:...

    Tonny 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<