环境变量加载到 vue 代码中但实际上不起作用

Environment variables loads into vue code but not working actually

有个奇怪的问题。为了验证 vue 组件内部的 jwt,当我像下面这样硬编码使用密钥时,它工作正常并成功验证 jwt 签名但是当我使用密钥作为环境变量时,尽管它加载在代码中并且 console.log( ) 打印它的值,但 jwt 不验证令牌并给出无效签名的错误。

var jwtToken = await jwt.verify(this.responseResult.token,"Xp2s5v8yVkYp3s6v9y$B&E)H@MbQeThWmZq4t7w!z%C*F-JaNdRfUjXn2r5u8x/A?D(G+KbP");

console.log(process.env.VUE_APP_JWT_SIGN_KEY); // Xp2s5v8yVkYp3s6v9y$B&E)H@MbQeThWmZq4t7w!z%C*F-JaNdRfUjXn2r5u8x/A?D(G+KbP
var jwtToken = await jwt.verify(this.responseResult.token, process.env.VUE_APP_JWT_SIGN_KEY);

.env 在项目的根目录中

 VUE_APP_JWT_SIGN_KEY=Xp2s5v8yVkYp3s6v9y$B&E)H@MbQeThWmZq4t7w!z%C*F-JaNdRfUjXn2r5u8x/A?D(G+KbP

package.json

"devDependencies": {
"@vue/cli-service": "^3.0.5",

开发工具控制台中的错误:

[Global Error Handler]: Error in v-on handler (Promise/async)[object Object]: JsonWebTokenError: invalid signature

我也试过在 .env 中将双引号放在 value 中,如下所示,但给出了同样的错误。有人可以帮忙吗?

 VUE_APP_JWT_SIGN_KEY="Xp2s5v8yVkYp3s6v9y$B&E)H@MbQeThWmZq4t7w!z%C*F-JaNdRfUjXn2r5u8x/A?D(G+KbP"

您应该将 .env 中的值括在引号内,但还要用反斜杠转义 $,例如

 VUE_APP_JWT_SIGN_KEY="Xp2s5v8yVkYp3s6v9y$B&E)H@MbQeThWmZq4t7w!z%C*F-JaNdRfUjXn2r5u8x/A?D(G+KbP"

可能还有其他需要转义的特殊符号 - 您将通过反复试验发现它们。