Nano Hash - криптовалюты, майнинг, программирование

Dart BrowserClient бросает трассировку стека при импорте

Как только я создаю экземпляр BrowserClient, я вижу трассировку стека в консоли браузера, и приложение умирает.

    import 'package:http/browser_client.dart';
    ...
    var client = new BrowserClient()
        ..withCredentials = true;

Stacktrace и соответствующий код в http / src / utils.dart:

'package: http / src / utils.dart': ошибка: строка 89 поз. 1: неожиданный токен 'Stream' Stream onDone (Stream stream, void onDone ()) => ^: package: http / src / utils.dart

/// Calls [onDone] once [stream] (a single-subscription [Stream]) is finished.
    /// The return value, also a single-subscription [Stream] should be used in
    /// place of [stream] after calling this method.
    Stream/*<T>*/ onDone/*<T>*/(Stream/*<T>*/ stream, void onDone()) =>
        stream.transform(new StreamTransformer.fromHandlers(handleDone: (sink) {
          sink.close();
          onDone();
        }));

Если я только импортирую его, исключение выглядит иначе - stacktrace и соответствующий код в async / src / byte_collector.dart

'пакет: async / src / byte_collector.dart': ошибка: строка 42 поз.1: неожиданный токен 'T' T _collectBytes (^: package: async / src / byte_collector.dart

T _collectBytes<T>(
    Stream<List<int>> source,
    T result(StreamSubscription<List<int>> subscription,
        Future<Uint8List> result)) {

Я использую последнюю версию браузера и http-зависимости

browser: "^0.10.0+2"
http: "^0.11.3+13"

Изменилось ли что-нибудь в BrowserClient, о чем мне нужно знать? Этот код работал нормально последние два года.

Я пробовал версии Dart 1.22.1 и 1.23.0, я убедился, что Dartium обновлен и соответствует версии Dart. pub build тоже не показывает ошибок.

Фактически, простой импорт import 'package:http/browser_client.dart'; вызывает трассировку стека независимо от того, используется он или нет.

Полный pubspec.yaml на всякий случай:

...
environment:
  sdk: '>=1.13.0 <2.0.0'
dependencies:
  angular2: "^2.2.0"
  bootjack: "0.6.7+2"
  browser: "^0.10.0+2"
  event_bus: "^0.4.1"
  less_dart: any
  http: "^0.11.3+13"
  dart_to_js_script_rewriter: "^1.0.2"
transformers:
- angular2:
    platform_directives:
    - package:angular2/common.dart#COMMON_DIRECTIVES
    platform_pipes:
    - package:angular2/common.dart#COMMON_PIPES
    entry_points: web/main.dart
- dart_to_js_script_rewriter
- $dart2js:
    commandLineOptions: [--enable-experimental-mirrors]
- less_dart:
    entry_points: [web/css/main.less]
    build_mode: dart

Понижение версии http тоже не помогает. Я сделал pub cache repair, удалил pubspec.lock файл и повторно запустил pub get, ошибка остается, пока я импортирую / использую BrowserClient

==================

Протестируйте приложение, чтобы воспроизвести проблему:

==================

lib/components/bug-fix.dart

import 'package:angular2/angular2.dart';
import 'package:angular2/core.dart' show AfterContentInit, Component;
import 'package:angular2/router.dart'
    show ROUTER_DIRECTIVES, Route, RouteConfig;

// uncomment this line to make it crash
// import 'package:http/browser_client.dart';


@Component(
    selector: 'bug-fix',
    template: 'test',
    providers: const [],
    directives: const [ROUTER_DIRECTIVES]
)
@RouteConfig(const [

])
class AppComponent {



}

web/index.html

<!DOCTYPE html>
<html>
<head>
    <!--<base href="/">-->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="developed-by" content="jVaaS (Pty) Ltd">
    <title>BugFix APP</title>
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <!--<link rel="stylesheet" href="css/main.css?4">-->
    <!--<script src="cordova.js"></script>-->
</head>
<body >
<bug-fix class="noselect">

</bug-fix>
<script async src="main.dart" type="application/dart"></script>
<script async src="packages/browser/dart.js"></script>

</body>


</html>

web/main.dart

import 'package:angular2/angular2.dart' show provide;
import 'package:angular2/platform/browser.dart';
import 'package:angular2/router.dart' show ROUTER_PROVIDERS;
import 'package:angular2/src/platform/browser/location/hash_location_strategy.dart';
import 'package:angular2/src/platform/browser/location/location_strategy.dart';
import 'package:bugfix/components/bug-fix.dart';

void main() {
    // bootstrap angular2
    bootstrap(AppComponent, [
        ROUTER_PROVIDERS,
        provide(APP_BASE_HREF, useValue: '/'),
        provide(LocationStrategy, useClass: HashLocationStrategy)
    ]);
}

pubspec.yaml

name: bugfix
version: 2.0.0
description: BugFix
environment:
  sdk: '>=1.13.0 <2.0.0'
dependencies:
  angular2: "^2.2.0"
  bootjack: "0.6.7+2"
  browser: "^0.10.0+2"
  event_bus: "^0.4.1"
  less_dart: any
  http: "^0.11.3+13"
  dart_to_js_script_rewriter: "^1.0.2"
transformers:
- angular2:
    platform_directives:
    - package:angular2/common.dart#COMMON_DIRECTIVES
    platform_pipes:
    - package:angular2/common.dart#COMMON_PIPES
    entry_points: web/main.dart
- dart_to_js_script_rewriter
- $dart2js:
    commandLineOptions: [--enable-experimental-mirrors]
- less_dart:
    entry_points: [web/css/main.less]
    build_mode: dart

==================

Приведенный выше код - это буквально единственный код в приложении «Исправление ошибок». Я делаю pub get, а затем pub serve --port=8888. Как только я раскомментирую импорт browser_client, он умирает с указанными выше трассировками стека.

23.04.2017

  • Было ли какое-то обновление вызвало проблему? Возможно, это потому, что Angular не любит общие методы. По опубликованным вами фрагментам кода сложно сказать, как все взаимосвязано. 24.04.2017
  • Это совершенно новый проект, который я начал в пятницу, вчера добавил в http и browser, и я просто не могу заставить BrowserClient работать, хотя тот же код безупречно работает в других проектах Angular, которые я делал раньше. 24.04.2017
  • Я только что создал тестовое приложение, в котором ничего нет, см. Включенный код. как только я раскомментирую этот browser_client.dart импорт, он умирает с трассировкой стека в браузере. 24.04.2017
  • На какую версию вы перешли. Вы пытались исправить 0.11.3+9? 24.04.2017
  • Я пробовал исправить версию для каждой отдельной версии http, доступной на https://pub.dartlang.org/packages/http с 2015 года. Ни один из них не работал, каждая генерировала отдельное исключение. Я предполагаю, что это не библиотека http, а что-то еще, что заставляет ее умереть. 24.04.2017
  • Извините, идей нет. Я просто использовал его вчера с новым проектом, и у меня не было проблем. 24.04.2017

Ответы:


1

Создал минимальное репо и попросил жену протестировать его на своей машине (https://github.com/janvladimirmostert/angular-dart-browser-client), и у нее все работало нормально.

Удаление всех следов дротика и дартиума и повторная установка дротика на моем компьютере исправили это для меня.

Очень странно: - |

24.04.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..