Карта JSPM для зависимостей, неправильно определяющих путь

У меня сильное разочарование по поводу JSPM, это всего лишь последняя проблема из многих.

Я установил angularfire2 через JSPM через - sudo jspm install npm:angularfire2 (Да, SUDO. Без SUDO не работает!!), который должен установить @angular зависимостей. Сгенерированный пакет json выглядит так:

"jspm": {
  "dependencies": {
    "angularfire2": "npm:angularfire2@^2.0.0-beta.2"
  },
  "devDependencies": {
    "typescript": "npm:typescript@^1.8.10"
  }
}

И сгенерированный конфиг выглядит так:

System.config({
  baseURL: "/",
  defaultJSExtensions: true,
  transpiler: "typescript",
  typescriptOptions: {
    "emitDecoratorMetadata": true
  },
  paths: {
    "github:*": "jspm_packages/github/*",
    "npm:*": "jspm_packages/npm/*"
  },

  packages: {
    "app": {
      "main": "./app.ts",
      "defaultExtension": "ts"
    }
  },

  map: {
    "angularfire2": "npm:[email protected]",
    "typescript": "npm:[email protected]",

    ...

    "npm:[email protected]": {
      "@angular/common": "npm:@angular/[email protected]",
      "@angular/compiler": "npm:@angular/[email protected]",
      "@angular/core": "npm:@angular/[email protected]",
      "@angular/platform-browser": "npm:@angular/[email protected]",
      "@angular/platform-browser-dynamic": "npm:@angular/[email protected]",
      "firebase": "npm:[email protected]",
      "rxjs": "npm:[email protected]"
    }

    ...
  }
});

Поэтому, когда я обновляю страницу приложения, я вижу, что оно правильно импортирует angularfire2.js, а затем пытается импортировать @angular/platform-browser-dynamic.js. Но адрес, который он пытается импортировать, - http://localhost:8000/@angular/platform-browser-dynamic.js, что является неправильным путем! Я предполагаю, что это потому, что первая строка моего app.ts (и отправная точка приложения) имеет эту строку- import { bootstrap } from '@angular/platform-browser-dynamic';. Но что ПОЧЕМУ JSPM не отображает это правильно? Нужно ли устанавливать эти пакеты отдельно? Если да, то ПОЧЕМУ существует такая вещь, как зависимости пакетов?

Ожидается: при разрешении этого импорта должен быть разрешен адрес /jspm_packages/npm/**.

Получил: SystemJS пытается загрузить пакет из корневого веб-узла /.


person micah    schedule 26.06.2016    source источник


Ответы (1)


Вы должны вручную добавить следующее на карту.

"@angular/common": "npm:@angular/[email protected]",
"@angular/compiler": "npm:@angular/[email protected]",
"@angular/core": "npm:@angular/[email protected]",
"@angular/platform-browser": "npm:@angular/[email protected]",
"@angular/platform-browser-dynamic": "npm:@angular/[email protected]",

Не уверен, что это реальное решение, но оно работает. Будущее уже здесь.

person micah    schedule 26.06.2016