由于不安全评估,使用“ vue-cli-service build”时,Vue.js 3扩展名中断

ko0stik

我基于开发使用VUE 3,VUE路由器和vuex一个Chrome扩展Kocal的项目,它使用vue-cli引擎盖下。我尽可能地使用单个文件组件来广泛使用vue绑定。一切在开发模式下都可以正常运行,但是我最近尝试构建用于生产的应用程序,并且在部分渲染时遇到了此错误

chunk-vendors.f6de00a6.js:11 EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'".

经过几天的挖掘,我的理解是,通过eval脚本引用/注入代码,webpack或vue编译系统都将CSP弄乱了。因为我对此还很陌生,所以我很难阅读以区分我能做什么。

我尝试了不同的方法:

  • $vue为仅内置的运行时定义别名vue.config.js(应该通过在运行时之前编译代码来消除不安全的评估,但以新错误结尾:Uncaught TypeError: Object(...) is not a functionfor o=Object(n["withScopeId"])("data-v-21ae70c6");
  • render()从根本上使用功能
  • 添加"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",manifest.json
  • 切换组件以render()查看是否有更好的机会进行部分渲染,但是尽管从渲染执行了console.log,但最终没有显示任何内容。
  • 向vue.config上的chainWebpack拆分清单和内联清单添加配置

让我感到困惑的是,我无法摆脱unsafe-eval,充其量只能显示部分内容,而最糟糕的是空白页面。无论如何,绑定似乎都被取消了,使用路由器链接更改页面将产生一个空白页面。

编辑:从webpack中浏览编译的代码并将最小化选项设置为false后,似乎错误来自供应商:vue-i18n

ko0stik

tl; dr:检查您的依赖项/软件包,包括那些您不认为它们使用的软件包unsafe-eval

在深入研究了vue3的Webpack内部和组件构建之后,以下是一些要点:

  • 使用单一文件组件和默认的vue-cli配置是可以的,因为它确实只需要vue运行时,所以请不要主动 unsafe-eval
  • webpack的配置如下:
  module.exports = {
    configureWebpack: {
      plugins: [
        new webpack.DefinePlugin({
          global: "window" // Placeholder for global used in any node_modules
        })
      ]
    },
    ...
  };
// Note that this plugin definition would break if you are using "unit-mocha" module for vue-cli

最后,问题是我用于i18n的依赖项vue-i18n@next,在删除它并切换为chrome的i18n方式后,它现在可以工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运行vue-cli-service服务时,Node.js的CPU使用率很高

Vue Cli 3如何使用官方的PWA插件(Service Worker)

当@vue/cli-service - vue.config.js 需要时,defineConfig 未定义

使用vue-cli-service build --target lib时,如何在/ dist文件夹中复制* .html文件?

使用vue-cli-service构建时,是否可以获取嵌套的.vue文件?

运行'vue-cli-service build --watch'时没有CSS文件

使用Vue CLI项目设置时,如何在Vue.js中使用$ emit?

Vue.js-vue-cli-service服务-img src无法从对象正确加载

Vue.js:如何防止`vue-cli-service --modern`构建旧版捆绑包?

`vue-cli-service build` 不生成模板代码

vue-cli-service build --target lib不尊重@路径

使用vue-cli-3的全局共享变量vue.js

vue-cli-service使用哪个入口文件?

使用“ vue-cli-service serve”时在哪里找到outputdir或dist文件

Vue.js:在vue.config.js中定义计算的环境变量(Vue CLI 3)

如何修复 vue-cli-service 漏洞?

使用CLI创建Vue项目时出错

在XAMPP上使用Vue CLI 3

使用Vue Cli 3链接到字体

使用 Vue.js 和 Vue CLI 3 处理一些处理后通过道具渲染项目

使用CLI模板时Vue.js中的全局变量

使用Vue CLI创建项目时出现core.js错误

Vue CLI 3 vue.config.js与webpack.config.js的插件

在Vue-CLI中使用PleaseWait.js加载屏幕

如何在Vue CLI中使用静态JS?

Vue js CLI 2 导入和使用javascript插件

如何使用webpack性能对象将js文件分成vue cli 3中的块?

Vue CLI 3 vue.config.js 编译“未知词”错误

Vue.js CLI中的多个页面