Как загрузить Emberjs 2.0 с помощью jspm и systemjs

Я пытаюсь использовать Ember 2.0 и иметь следующие файлы config.js

System.config({
  "baseURL": "/static/js",
  "transpiler": "traceur",
  "paths": {
    "*": "*.js",
    "github:*": "jspm_packages/github/*.js"
  }
});

System.config({
  "map": {
    "ember": "github:components/[email protected]",
    "traceur": "github:jmcriffey/[email protected]",
    "traceur-runtime": "github:jmcriffey/[email protected]",
    "github:components/[email protected]": {
      "jquery": "github:components/[email protected]",
      "handlebars": "github:components/[email protected]"
    }
  }
});

app.js

import Ember from "ember";
let App = Ember.Application.create({
    LOG_TRANSITIONS: true,
    LOG_TRANSITIONS_INTERNAL: true,
});

и index.html

<script src="{% static "js/jspm_packages/system.js" %}"></script>
<script src="{% static "js/config.js" %}"></script>
<script>
    System.import('app');
</script>

после загрузки у меня следующая ошибка

Uncaught (in promise) Error: Cannot read property 'Ember' of undefined
    Error loading http://localhost:9090/static/js/app.js
    at http://localhost:9090/static/js/jspm_packages/github/components/[email protected]/ember.js!transpiled:16:38
    at http://localhost:9090/static/js/jspm_packages/github/components/[email protected]/ember.js!transpiled:97:11
    at execute (http://localhost:9090/static/js/jspm_packages/github/components/[email protected]/ember.js!transpiled:25603:9)
    at m (http://localhost:9090/static/js/jspm_packages/system.js:4:20821)
    at m (http://localhost:9090/static/js/jspm_packages/system.js:4:20756)
    at m (http://localhost:9090/static/js/jspm_packages/system.js:4:20756)
    at Object.Promise.all.then.execute (http://localhost:9090/static/js/jspm_packages/system.js:4:23421)
    at b (http://localhost:9090/static/js/jspm_packages/system.js:4:7874)
    at S (http://localhost:9090/static/js/jspm_packages/system.js:4:8253)
    at p (http://localhost:9090/static/js/jspm_packages/system.js:4:6131)

если скрипты загрузки без systemjs и jspm работают всегда. но хочу использовать jspm и systemjs :) Раньше я использовал ember 1.13 и с конфигурацией работал. Я думаю проблема с конфигом jquery


person Boris Ivanov    schedule 14.08.2015    source источник


Ответы (1)


Похоже, что пакет для Ember не всегда совместим с jspm. Я всегда использую следующее переопределение в моем package.json:

"jspm": {
  "overrides": {
      "github:components/[email protected]": {
      "main": "ember.debug",
      "files": [
        "ember.prod.js",
        "ember.debug.js"
      ],
      "dependencies": {
        "jquery": "github:components/jquery@^2.1.3"
      },
      "shim": {
        "ember.prod": {
          "deps": [
            "jquery"
          ],
          "exports": "Ember"
        },
        "ember.debug": {
          "deps": [
            "jquery"
          ],
          "exports": "Ember"
        }
      }
    }
  }
}

Он предписывает jspm устанавливать только рабочие и отладочные версии Ember и правильно описывает все зависимости и экспорты. Если вы используете его, вам нужно снова запустить jspm install после того, как вы добавите его в свой package.json.

Вы можете столкнуться с другой проблемой с шаблонами htmlbars. У меня есть плагин для решения этой проблемы: https://github.com/n-fuse/plugin-ember-hbs:

jspm install hbs=github:n-fuse/[email protected]

должен позволять импортировать шаблоны hbs без необходимости добавления компилятора в зависимости.

См. также начальный проект, который я создал: https://github.com/OrKoN/jspm-ember-playground

person Oleksii Rudenko    schedule 14.08.2015