vuei18n在生产环境下报错误后的解决办法

Vue3 i18n在生产环境下的问题!

1#

在 Vue3 vite 构建中使用 CSP 时,会抛出此错误: EvalError:
拒绝将字符串评估为 JavaScript,因为“unsafe-eval”不是以下内容安全策略指令中允许的脚本源:“script-src 'self' 'nonce-FMO9QrSTmJ76tL87'

出现这种错误是因为vue i18n在打包的时候为了提高性能,使用eval写法,new function, 部署到生产环境时,有一定几率导致上述问题, **

image.png

找了无数方法,终于在官方插件最新的issues内找到了和我一样的问题,

强烈建议大家遇到插件有问题什么的,就去github上找一下有无雷同的做法!!!

重新下载vue i18n,更新版本到9以上 pnpm i -S vue-i18n@v9.3.0-beta.24

然后下载unplugin-vue-i18n这个插件

npm install @intlify/unplugin-vue-i18n --save

加入以下

image.png

1d1ipl5r.png

在跟plugins同级的resolve下,增加define选项,开启jit编译,

image.png

之后打包就没问题了,服务器那边也不用新增什么配置了,大家有问题可以提出来,看到秒回。

ok了家人们,原创,转载标明出处

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 `vue-i18n` 插件来实现异步函数返回 `vue-i18n` 的实例。以下是一个简单的示例: 1. 首先,在您的项目中安装并配置 `vue-i18n`: ```bash npm install vue-i18n ``` 2. 在您的项目中创建一个异步函数,用于获取语言文件或远程数据: ```javascript // async function to fetch language data async function fetchLanguageData() { // perform asynchronous operations here, such as API calls or reading language files const data = await fetch('your/language/api/endpoint'); const languageData = await data.json(); // return the language data return languageData; } ``` 3. 在您的 Vue 组件中,使用异步函数来返回 `vue-i18n` 实例: ```javascript import Vue from 'vue'; import VueI18n from 'vue-i18n'; Vue.use(VueI18n); export default { data() { return { i18n: null, // store the i18n instance here }; }, async created() { // fetch the language data asynchronously const languageData = await fetchLanguageData(); // create a new instance of vue-i18n with the fetched data this.i18n = new VueI18n({ locale: 'en', // set your default locale here messages: languageData, }); }, }; ``` 在上述示例中,`fetchLanguageData` 函数用于异步获取语言数据。在 Vue 组件的 `created` 生命周期钩子中,我们等待语言数据的异步获取完成,并使用该数据创建一个新的 `vue-i18n` 实例。最后,我们将 `vue-i18n` 实例存储在组件的 `data` 中,以供其他组件使用。 请注意,上述示例仅展示了异步函数返回 `vue-i18n` 实例的基本方法。您可以根据您的项目需求进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值