JSPM System.import 404s

Я пытаюсь изучить JSPM, так как кажется, что это будущее для установки клиентского JavaScript. Я НЕ пытаюсь использовать ES6 или TypeScript, но на самом деле использую CoffeeScript, который я компилирую в «стандартный» JavaScript для браузера. Я запускаю node.js в экспрессе с моими общедоступными файлами, содержащимися в ./public и доступными по пути /.

После установки jspm моя конфигурация package.json:

"jspm": {
  "directories": {
    "baseURL": "public",
    "packages": "public/lib"
  }
}

Он настроен так:

System.config({
  baseUrl: '/',
  defaultJSExtensions: true,
  transpiler: false,
  paths: {}
});

С этой настройкой я запускаю: jspm install lodash, который устанавливает пакет в public/lib/npm/[email protected]. В моем приложении JavaScript я ожидаю, что смогу запустить:

System.import('lodash');

и ожидал бы, что это вернет обещание. Однако я получаю 404 на /lodash.js. Итак, чтобы исправить это, я решил использовать явный путь к lodash: lib/npm/[email protected]/lodash. Это, кажется, разрешает lodash 404, но затем я получаю 404 для /buffer.js и /process.js, которые, как я полагаю, являются зависимостями lodash.

Наверняка должен быть лучший способ, чем этот? Что мне здесь не хватает?! Часть трудности, с которой я сталкиваюсь, заключается в том, что в большинстве примеров, похоже, используются директивы импорта ES6, которые не имеют отношения ко мне.


person Aaron Janes    schedule 28.02.2016    source источник


Ответы (1)


Кажется, вам не хватает некоторых путей в вашей конфигурации systemjs:

System.config({
  baseURL: "/",
  defaultJSExtensions: true,
  transpiler: false,
  paths: {
    "github:*": "lib/github/*",
    "npm:*": "lib/npm/*"
  },

  map: {
    "lodash": "npm:[email protected]",
    ...
    "npm:[email protected]": {
      "buffer": "github:jspm/[email protected]",
      "process": "github:jspm/[email protected]"
    },
    ...
  }
});

Кроме того, у вас должна быть объявлена ​​​​зависимость от lodash в вашем package.json:

{
  "jspm": {
    "directories": {
      "baseURL": "public",
      "packages": "public/lib"
    },
    "dependencies": {
      "lodash": "npm:lodash@^4.6.1"
    }
  }
}
person ricardobrandão    schedule 09.03.2016