gpt4 book ai didi

dart - 在 Dart Chrome 应用程序中使用 Polymer

转载 作者:行者123 更新时间:2023-12-01 06:19:21 26 4
gpt4 key购买 nike

我正在尝试使用 Dart 和 Polymer 构建应用程序。但是聚合物脚本似乎在 web_components/platform.js:32 中使用了 eval()。有没有人设法做到这一点?我尝试更改 CSP,但这首先有所帮助。

有人有工作示例吗?

问候和感谢罗伯特

编辑

list .json:

{
"name": "Animatr app",
"version": "1",

"author": "Robert Hartung",

"manifest_version": 2,

"icons": {"128": "animatr_icon.png"},

"app": {
"background": {
"scripts": ["background.js"]
}
},

"content_security_policy": "script-src 'self' unsafe-inline;"
}

main.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Animatr app</title>
<link rel="stylesheet" href="animatr_chrome_app.css">
<link rel="import" href="packages/polymer/polymer.html">
</head>
<body>

<script src="packages/chrome/bootstrap.js" defer></script>
<script src="my_chrome_app.dart" type="application/dart;component=1"></script>
</body>
</html>

错误:

Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "default-src 'self' chrome-extension-resource:". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback. (chrome-extension://ofkfcbfhgkoglbgldcdokficikimdjji/packages/web_components/platform.js:32)
Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'self' chrome-extension-resource:". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

pubspec.yaml:

name: animatr_app
description: A sample Chrome packaged application
dependencies:
chrome: any
polymer: any
transformers:
- chrome
- polymer:
entry_points:
- app/animatr_chrome_app.html
csp: 'true'

应用程序无法正确识别聚合物元素。

最佳答案

我一直在努力解决同样的问题,试图将简单的向导生成的聚合物应用程序(带有计数器的应用程序)作为 chrome 打包应用程序运行。我终于设法至少运行了它的 javascript 构建版本,试图理解 csp 问题。出于多种原因,它听起来无法运行 native,因为打包的应用程序是从文件系统加载的,而不是通过 pub serve 加载的。从 web/build 加载未打包的扩展 也没有按原样工作。解决方案是从生成的 html 文件中加载 xxx.html_bootstrap.dart.precompiled.js 而不是 xxx.html_bootstrap.js我所做的是:

  • 删除 chrome 转换器,因为聚合物转换器已经用 javascript 脚本引用替换了 dart 脚本引用
  • 在聚合物变压器选项中添加csp: true(尽管没有它也能正常工作)
  • 为了避免手动更改生成的 html 以加载 precompiled.js 版本,我编写了一个简单的转换器。
  • 然后我可以在 Chrome 中加载(不必是 Dartium,因为它是 javascript)一旦我运行 pub build( Release模式需要)

我现在只有这个警告:

Deprecation: Automatic generation of output for Content Security
Policy is deprecated and will be removed with the next development
release. Use the --csp option to generate CSP restricted output.

这意味着我可能必须很快找到一个新的 hack...

关于dart - 在 Dart Chrome 应用程序中使用 Polymer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23710329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com