开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
globby的一个bug
我使用的是11.0.0,目录下边是有一个txt的
const ret = globby.sync('D:/Program Files (x86)/1/*.txt');
console.log(ret)
结果找不到,追查底层代码,发现是正则匹配出现了问题,如果目录中出现一个空格是能够正常工作的,但是如果多次出现空格,就无法正常工作,也懒得想怎么修复这个问题了
globby还有一个问题,目录分割必须是/,Windows的\也会导致无法正常工作
也有可能跟我使用的globby的版本有一定的关系,因为很久之前一直使用这个package,并没有发现这个问题,当时都会尽量避免空格中文字符的路径,可能绕过了这个问题,直接换glob,一切正常!
Jenkins控制台中文乱码
解决办法
Manage Jenkins/Configure System
- LANG
- zh.CN.UTF-8
- 配置Windows系统的环境变量
- 键:JAVA_TOOL_OPTIONS
- 值:-Dfile.encoding=UTF-8
- 修改
Jenkins.xml,arguments中添加-Difile.encoding=utf-8
4. 配置从节点
Manage Jenkins/Manage Nodes and Clouds
- 重启Jenkins服务,登录管理员账号,输入url:
JenkinsURL/restart
如果一切顺利的话,控制台就会正常显示中文了,这里仅仅是修改了Jenkins的输出编码,如果脚本中的编码异常,还需要修改脚本的。
nodejs脚本中修改
使用nodejs的spawn的话,默认返回的就是utf8格式,而在本地测试的时候,控制台是gbk,只需要转码就行了
设置下调试的环境变量
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"preLaunchTask": "npm: only-build",
"program": "${workspaceFolder}/dist/index.js",
"skipFiles": ["<node_internals>/**"],
"env": {
"vscode": "true"
}
}
]
}
通过环境变量区分是否需要转码
import { decode, encode } from "iconv-lite";
if (process.env.vscode) {
console.log(decode(str, "gbk"));
} else {
console.log(str.toString());
}