
获得徽章 0
- axios统一处理params中数组、object传参
// 创建axios实例
const service = axios.create({
withCredentials: true, // 允许携带cookie
/**
* 处理所有使用 params 传递的数组、对象等数据,将其转换成JSON字符串
* data 中包含数组、对象等数据时,并不会进行处理
* 处理数组和对象的函数,会保留数组中数据类型
// 原始参数
{
ids: [1, 2, 3], // 数字数组
name: "test", // 字符串
active: true, // 布尔值
extra: null // null
}
// 转换后
"ids=%5B1%2C2%2C3%5D&name=%22test%22&active=true&extra=null"
// 解码后相当于:
ids=[1,2,3]&name="test"&active=true&extra=null
*/
paramsSerializer: function (params) {
const processedParams = Object.keys(params).reduce((acc, key) => {
if (
Array.isArray(params[key]) ||
typeof params[key] === 'object'
) {
acc[key] = JSON.stringify(params[key]) // 保持原始数据类型
} else {
acc[key] = params[key] // 基本类型直接保留
}
return acc
}, {})
return qs.stringify(processedParams)
},
})展开评论点赞 - #每天一个知识点#
配置 husky 和 commitlint 完成后,在提交代码的时候,出现一个错误如图,是因为`package.json`文件中声明了项目类型`type: module`,导致项目统一使用`ES Module`而非`Commonjs`的方式导入方式,因此当我是用`commitlint.config.js`时,是默认是用`Commonjs`的方式,根据错误提示,将文件类型改为`.cjs`结尾,就会以`ES Module`的方式导入
这也解决了我“为什么项目目录里`.eslint.cjs`文件是`.cjs`格式的疑问”展开评论点赞 - #每天一个知识点#
以 Mac 电脑为例,终端shell配置 ~/.zshrc 文件 或者 ~/.bash_profile 文件,实现启动终端时,自动加载项目目录下 .nvmrc 中的 node 版本,或者加载 package.json 文件中, engines 配置的 node 大版本
load-nvmrc() {
echo '找到.nvmrc配置,并自动切换node版本
'
nvm use #
}
load-engines-node() {
local node_version=$(sed -n '/engines/,/}/p' package.json | grep -o "\"node\":\s*\"[^\"]*\"" | cut -d ':' -f 2 | tr -d '"')
local version_number=$(echo "$node_version" | grep -o '[0-9]*\.[0-9]*\.[0-9]*' | tail -n1 | grep -o '[0-9]*' | head -n1)
if [ -n "$version_number" ]; then
echo "找到package中engines的node版本($version_number)配置,并自动切换node版本
"
nvm use "$version_number"
fi
}
load-node() {
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
load-nvmrc
else
load-engines-node
fi
}
load-node
# end =====展开赞过评论1