【问题标题】:Building Vue for development and runtime only for use in Chrome Apps为开发和运行时构建 Vue,仅用于 Chrome 应用程序
【发布时间】:2019-09-21 23:22:03
【问题描述】:

我正在努力将基于 jQuery 的 Chrome 应用程序转换为 Vue。由于 Chrome Apps 的Content Security Policy (CSP) 无法使用eval(),因此必须事先编译模板。

这本身不是 Vue 的 Single File Components (SFC) 方法的问题,其中所有模板都被编译以在构建过程中呈现函数。

但是,由于构建目标是生产,所有来自 Vue 的警告和有用的 cmets 都被删除了。因此,例如,如果我忘记了组件的属性,我不会收到有关它的警告。它只是不会出现。这使得开发非常困难。

那么,如果我在package.json 中为build 使用:

"build": "vue-cli-service build --mode development"

我在 Chrome 应用程序中收到错误:

Uncaught 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' blob: filesystem: chrome-extension-resource: 'wasm-eval'".

而且以

开头的index.js文件中确实有很多evals
eval("__webpack_require_

所以我的问题是:

如何让构建系统在不使用禁止的eval 的情况下在控制台中保留警告和提示?

不知道是不是包含了模板编译器导致的问题,如果是的话,如何告诉builder不要使用编译器,仍然使用开发模式?

【问题讨论】:

  • 这是用于扩展的,您可以轻松地为 chrome 应用制作一个:github.com/Kocal/vue-web-extension
  • @Alireza:谢谢,但是一旦我选择开发模式,它就会开始使用 eval() ,然后它就不再工作了。我的目标是让它只使用运行时,但仍然是开发模式。
  • 在你构建的时候能用吗?
  • 是的,它工作正常。我只是错过了开发模式下来自 Vue 的调试信息。另外,我希望 JS 不被缩小。

标签: javascript vue.js vuejs2 google-chrome-app


【解决方案1】:

这是 CSP 的“问题”,您需要使用 vue.runtime.js 版本的 Vue。

请参考https://vuejs.org/v2/guide/installation.html#CSP-environments

【讨论】:

  • 谢谢,但是如何让 Vue 在构建项目时使用运行时版本?
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 2019-11-27
  • 2011-06-21
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
相关资源
最近更新 更多