Vite 3给了我们定义环境变量的选项,这些环境变量将在项目构建时查找/用值替换键。
定义版本的配置部分如下所示:
define: {
__RELEASE_VERSION__: JSON.stringify(getReleaseVersion(mode)).trim(),
},
getReleaseVersion
看起来像这样:
const getReleaseVersion = (mode: string) => {
if (mode === 'development') {
return '';
}
const commitHash = childProcess
.execSync('git rev-parse --short HEAD')
.toString();
return `${pkg.version}-${commitHash}`;
};
这段代码运行在服务器端,我已经验证了返回的字符串是正确的。
在我的项目中,我首先做的事情之一(客户端)是console.log('Release:', __RELEASE_VERSION__);
。
正如你所看到的,在字符串的末尾有一个换行符。这是不需要的,并且会导致跟踪错误(它会导致发布版本不匹配)。
在缩小的文件中也可以看到:
是否有任何方法可以缓解这种情况,或者我是否应该找到另一种方法来访问此变量?
1条答案
按热度按时间zkure5ic1#
在你的
getReleaseVersion
中,你使用的是运行命令的完整输出。* 这包括Git* 的尾随换行符输出。*要获得所需的字符串,需要去掉尾部的换行符。例如:
您正在执行的
trim
无法工作的原因是,它是在JSON编码的字符串上操作的,所以第一个和最后一个字符是双引号,所有换行符都被转义(例如,' foo\n'
-〉'" foo\\n"'
),因此它什么也不做。