2021-04-22

2021-04-22

[2021-12-28]新开 tab 页面, sessionStorage 状态
[2021-10-28]企业微信工作台应用页面的控制台
[2021-10-28]el-table 中使用 fix column 后, 如果 row 高度发现变化, fix column 不会变化, 导致同一行布局割裂
[2021-09-29]el-table safari text-overflow 失效
[2021-09-28]curl 进行 ES 查询操作
[2021-06-29]vuex typescript support
[2021-06-25]This Set-Cookie was blocked because it was not sent over a secure connection and would have overwritten a cookie with the Secure attribute. [2021-06-16]eggjs 模板初始测试用例跑不通 Error: expected 200 "OK", got 404 "Not Found"
[2021-06-09]ts export * as <name> 语法
[2021-06-04]npm 包发布调试
[2021-04-22].npmignore 忽略文件不起效

[2021-12-28]新开 tab 页面, sessionStorage 状态

以下情况都是在 chrome 下测试所得, 不同浏览器表现可能并不一致

新开方式(新打开的 tab 都是同一个域) 新 tab 中 sessionStorage 是否保留上个 tab 设置的数据
<a href=”xxx” target=”_blank”>
<a href=”xxx” target=”_blank” rel=”opener”>
<a href=”xxx” target=”_blank” rel=”noopener”>
window.open(‘xxx’, “_blank”)
[2021-10-28]企业微信工作台应用页面的控制台

Mac: shift + ctrl + command + D -> 帮助 -> 开发调试选项 -> 开发调试选项 -> 开启 Webview 元素检查

Windows: shift + ctrl + alt + D

[2021-10-28]el-table 中使用 fix column 后, 如果 row 高度发现变化, fix column 不会变化, 导致同一行布局割裂

待补充

[2021-09-29]el-table safari text-overflow 失效

待补充

[2021-09-28]curl 进行 ES 查询操作

简单查特定 id

curl '127.0.0.1:9200/${index}/${type}/_search?q=_id:xxxxxx&pretty'

复杂查询条件

curl -X GET "127.0.0.1:9200/${index}/${type}/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match_all": {}
  }
}
'
[2021-06-29]vuex typescript support

使用 typescript + vue 进行开发, 需要补充 vuex 的类型支持, 翻了一下开源方案

翻到了这篇文章 https://betterprogramming.pub/the-state-of-typed-vuex-the-cleanest-approach-2358ee05d230

对文章内提到的库进行了简单实践, 目前暂且选用 vuex-module-decorators

一个站点同时可以通过 http 和 https 访问

如果当前浏览器之前曾经通过 https 访问过,并且有 set-cookie header 返回,一般情况下,如果服务没有做特殊处理的话,https 响应的 set-cookie header 都会带 secure 标识位

这个时候清掉 cookie, 再通过 http 访问,这个时候响应的 set-cookie header 会被 block 掉

详细的情况可以看下这个问题 https://stackoverflow.com/questions/52763345/browsers-ignore-set-cookie-response-header-if-we-try-to-set-a-cookie-which-was-s

[2021-06-16]eggjs 模板初始测试用例跑不通 Error: expected 200 "OK", got 404 "Not Found"

eggjs 应用初始化后, 安装依赖完成运行 npm run test 运行初始化模板的测试用例报错通不过

  1) test/app/controller/home.test.ts
       should GET /:
     Error: expected 200 "OK", got 404 "Not Found"

最后定位到的原因是底层依赖的 koa-compose 版本不一致

导致 koa-compose 版本不一致的原因是, 我们公司有自己的私有 npm 源, 私有源上 koa-compose 的最新版本是 4.2.0, 而官方源和淘宝源上最新的版本是 4.1.0

版本问题是因为 koa-compose 发布版本后又提交了一个 deprecation notice, 具体可以看下这个 issue https://github.com/koajs/compose/issues/106

使用官方源和淘宝源安装时并不会安装到已经 deprecation 的 4.2.0 版本, 而私有源这块行为表现有点不一样

至于 koa-compose 的 4.2.0 版本的特性, 其实就是新增了一个方法来打平 middleware 数组

[a, [b, c], b] => [a, b, c, d]

不过因为这样改变了 middleware 的引用, 导致 koa-compose dispatch 执行时, 并不能拿到完整的 middleware 数组

详细讨论可以看上述 issue 以及 PR#96

正是因为 koa-compose#4.2.0 的这个特性, 导致 @eggjs/router 中间件加载失败, 导致测试用例运行失败

至于为什么会出现跑测试用例时中间件加载有问题,但是正常启动(开发或生产)中间件加载却没问题?

猜测是 egg-mock 库关于 app mock 的部分, 并没有完全模拟正常 egg app 启动, 可能在中间件加载相关的顺序或者逻辑上有差异导致, 这部分实在太碎了, 没有接着定位下去

[2021-06-09]ts export * as <name> 语法

解决方案请翻阅 https://github.com/TypeStrong/ts-loader/issues/1121

原因是 tsconfig 中的 compilerOptions.module 配置有问题

[2021-06-04]npm 包发布调试
# 要发布的npm包下执行
npm pack

# 用于验证npm包的项目下, 安装npm pack命令生成的tgz
npm install /path/to/npm/package/tarball.tgz
[2021-04-22].npmignore 忽略文件不起效

今天定位了一个很无聊的问题, 直接说结论

就是 npmignore 是不会处理以下文件名的

readme copying license licence notice changes changelog history

ignore

加入你有一个使用 ts 开发的 npm 包, 在发布时需要编译生成对应的 js 文件并使用 npmignore 来忽略 .ts 文件

如果刚好, 你的文件名是 notice.ts, 那这个文件就不会被忽略, 实际的发布效果是, npm 包中既有 notice.ts, 也有 notice.js

ignore

我查了下文档, 发现确实有说明, 部分文件是 永远不会忽略 的, 但文档和代码实现有差异, 大家留个心眼即可