2015-07-21 2 views
2

Подобные вопросы были на какое-то время, может быть, кто-то знает ответ на сегодняшний стек. Идеальное сохранение отладки ...Полимер, Дарт, приложение для Chrome, CSP и отладка

У меня есть приложение Dart, которое реализует графический интерфейс в Polymer/Dart и задний конец в Chrome/Dart. Обе части работают хорошо (большое спасибо), теперь я пытаюсь связать их вместе и отладить любые проблемы. Унифицированное приложение попадает в волну ошибок CSP, поэтому я собрал крошечный тестовый пример. В сети распространен совет Dart/Polymer/CSP, но он меняется по мере развития, и очень трудно увидеть текущую лучшую практику. Вот тестовый пример:

manifest.json

{ 
    "manifest_version": 2, 
    "name": "Test Case", 
    "version": "0.3", 

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

    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", 

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

    "permissions": [ "usb" 
        , { "usbDevices": [ {"vendorId": 1027, "productId": 24597} ] } 
        , { "fileSystem": [ "write", "retainEntries", "directory" ] } 
        ] 

} 

background.js

chrome.app.runtime.onLaunched.addListener(function(launchData) { 
    chrome.app.window.create('testwrap.html', { 
     'id': '_myMainWindow', 
     'bounds': {'width': 800, 'height': 500 } 
     }); 
}); 

testwrap.html

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>PolyChrome</title>  
    <link rel="import" href="packages/polymer/polymer.html"> 
    <link rel="import" href="clickcounter.html">  
    </head> 
    <body> 
    <h1>Testing...</h1>  
    <p>in the test directory...</p> 

    <div id='container_id'> 
     <p id='text_id'>The log is here.</p> 
    </div> 
    <div id='div2'> 
     <click-counter></click-counter> 
    </div> 

    <script type='application/dart' src='testwrap.dart'></script>  
    </body> 
</html> 

testwrap.dart

import 'dart:html'; 
import 'package:polymer/polymer.dart'; 
export 'package:polymer/init.dart'; 

//---------------------------------------- 
@whenPolymerReady 
void mainStartup() { 
    querySelector("#text_id").text = 'Running'; 
    } 

Щелчок счетчик элементом является стандартный код со страницы/Polymer Дарта.

Ямль включает в себя $ dart2js, который, возможно, не используется (?) Или, возможно, имеет две строки csp: true неверны?

pubspec.yaml

name: polyChrome 

description: Chrome App with Polymer 

dependencies: 
    chrome: ^0.7.0-dev1 
    code_transformers: any 
    core_elements: any 
    paper_elements: any 
    polymer: any 

transformers: 
- polymer: 
    entry_points: 
    - web/testwrap.html 
    csp: 'true'  
- $dart2js: 
    csp: 'true' 
    checked: 'true' 

Сообщения об ошибках (CSP все же):

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. 

Confusingly тест приложение, кажется, работает нормально, несмотря на сообщения об ошибках, но большее испытание зависает во время загрузки - не может игнорировать сообщения.

Чем больше тест выдает сообщение об ошибке от

Zone zone = await initPolymer(); 

сообщение является немного непрозрачным (my_clock является одним из компонентов тест полимер, который работает на 100% в качестве веб-приложения):

Breaking on exception: Unsupported operation: Unsupported uri scheme chrome-extension for library LibraryMirror on 'my_clock'. 
+0

Я достаточно уверен, что две строки csp правильны и необходимы. –

ответ

2

Это даже не частичный ответ, но он может быть полезен другим ...

Линии csp имеют общую опечатку.Не пишите:

csp: 'true' 

Это правильно (то же самое исправление применяется к Проверила: верно):

csp: true 

И удалить эту строку из манифеста:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", 

Поиски продолжает:

0

вот основной пример с полимерным дроком

https://github.com/dart-gde/dart-chrome-app-samples/tree/master/chrome-app-with-polymer-dart

EDIT: вам нужно в pubspec.yaml иметь эти

transformers: 
- polymer: 
    entry_points: web/index.html 
    csp: true 
- chrome 
- $dart2js: 
    csp: true 

и удалить content_security_policy из вашего manifest.json

это должно работает

+0

Пожалуйста, добавьте контент из ссылки. – Robert

Смежные вопросы