Vite 3配置全局变量时字符串末尾出现换行问题求助
解决Vite 3中__RELEASE_VERSION__末尾带换行符的问题
问题出在git rev-parse --short HEAD命令的输出上——git执行该命令后返回的哈希字符串末尾默认带有换行符,你目前仅在JSON.stringify之后做trim(),但JSON.stringify会把原换行符转义为\n,此时trim()只能处理整个JSON字符串首尾的空白,对内部的转义换行无效。
直接在获取commit哈希的环节就去除换行符即可,具体修改如下:
1. 修复commitHash的获取逻辑
const getReleaseVersion = (mode: string) => { if (mode === 'development') { return ''; } const commitHash = childProcess .execSync('git rev-parse --short HEAD') .toString() .trim(); // 在此处添加trim(),去除git输出的换行符和首尾空白 return `${pkg.version}-${commitHash}`; };
2. 简化define配置(可选)
既然已经在源头处理了空白,JSON.stringify之后的trim()可以移除:
define: { __RELEASE_VERSION__: JSON.stringify(getReleaseVersion(mode)), },
处理后,客户端输出的__RELEASE_VERSION__就不会带有末尾换行符,版本追踪的匹配问题也会解决。当前的define配置方式完全适用,无需更换变量获取方式。
内容的提问来源于stack exchange,提问作者Jeff Huijsmans
相关产品推荐
相关产品推荐

