Пакет JSPM с отсутствующими файлами json

Я получаю неправильный файл пакета, когда выполняю команду:

jspm bundle src/main.js main-bundle.js

Такие файлы, как npm:@angular/[email protected], не включены, файлы .json не включены, только файлы .js, однако, если я запускаю ту же команду из OSX, эти поля включаются

Из OSX (допустимое содержимое файла пакета):

   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/animations-browser.umd.min.js
   npm:@angular/[email protected]/bundles/animations.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/common.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/compiler.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/core.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/forms.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/http.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/material.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/platform-browser-dynamic.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/platform-browser-animations.umd.min.js
   npm:@angular/[email protected]/bundles/platform-browser.umd.js
   npm:@angular/[email protected]
   npm:@angular/[email protected]/bundles/router.umd.js
   npm:[email protected]
   npm:[email protected]/client/shim.js
   npm:[email protected]/es6/reflect.js
   npm:[email protected]/es7/reflect.js

Из Linux (неправильный файл пакета, отсутствующие определения пакетов json):

   npm:@angular/[email protected]/bundles/animations-browser.umd.min.js
   npm:@angular/[email protected]/bundles/animations.umd.js
   npm:@angular/[email protected]/bundles/common.umd.js
   npm:@angular/[email protected]/bundles/compiler.umd.js
   npm:@angular/[email protected]/bundles/core.umd.js
   npm:@angular/[email protected]/bundles/forms.umd.js
   npm:@angular/[email protected]/bundles/http.umd.js
   npm:@angular/[email protected]/bundles/material.umd.js
   npm:@angular/[email protected]/bundles/platform-browser-dynamic.umd.js
   npm:@angular/[email protected]/bundles/platform-browser-animations.umd.min.js
   npm:@angular/[email protected]/bundles/platform-browser.umd.js
   npm:@angular/[email protected]/bundles/router.umd.js
   npm:[email protected]/client/shim.js
   npm:[email protected]/es6/reflect.js
   npm:[email protected]/es7/reflect.js
   npm:[email protected]/modules/_a-function.js

Оба используют одну и ту же версию jspm (0.17.0-beta.41), systemjs (0.20.10) и systemjs-builder (0.16.4), я полагаю, что в обеих средах есть что-то другое, но я удалил каталог ~/.jspm для чистой среды. с теми же результатами, и я не уверен, что еще может повлиять.

Файл jspm.config.js одинаков в обоих случаях:

SystemJS.config({
  nodeConfig: {
    "paths": {
      "github:": "jspm_packages/github/",
      "npm:": "jspm_packages/npm/"
    }
  },
  devConfig: {
    "map": {
      "plugin-typescript": "github:frankwallis/[email protected]",
      "typescript": "npm:[email protected]",
      "child_process": "npm:[email protected]",
      "module": "npm:[email protected]",
      "net": "npm:[email protected]"
    },
    "packages": {
      "npm:[email protected]": {
        "map": {
          "source-map": "npm:[email protected]"
        }
      },
      "npm:[email protected]": {
        "map": {
          "source-map-support": "npm:[email protected]"
        }
      }
    }
  },
  transpiler: false,
  packages: {
    "environments": {
      "defaultExtension": "js"
    },
    "src": {
      "defaultExtension": "js"
    }
  },
  map: {
    "@angular/animations/browser": "npm:@angular/[email protected]/bundles/animations-browser.umd.min.js",
    "@angular/platform-browser/animations": "npm:@angular/[email protected]/bundles/platform-browser-animations.umd.min.js",
    "app": "src/app"
  }
});

SystemJS.config({
  packageConfigPaths: [
    "github:*/*.json",
    "npm:@angular/*.json",
    "npm:@covalent/*.json",
    "npm:*.json"
  ],
  map: {
    "@angular/animations": "npm:@angular/[email protected]",
    "@angular/common": "npm:@angular/[email protected]",
    "@angular/compiler": "npm:@angular/[email protected]",
    "@angular/core": "npm:@angular/[email protected]",
    "@angular/forms": "npm:@angular/[email protected]",
    "@angular/http": "npm:@angular/[email protected]",
    "@angular/material": "npm:@angular/[email protected]",
    "@angular/platform-browser": "npm:@angular/[email protected]",
    "@angular/platform-browser-dynamic": "npm:@angular/[email protected]",
    "@angular/router": "npm:@angular/[email protected]",
    "@covalent/core": "npm:@covalent/[email protected]",
    "@covalent/dynamic-forms": "npm:@covalent/[email protected]",
    "@covalent/http": "npm:@covalent/[email protected]",
    "angular-in-memory-web-api": "npm:[email protected]",
    "angular-safeguard": "npm:[email protected]",
    "assert": "npm:[email protected]",
    "buffer": "npm:[email protected]",
    "constants": "npm:[email protected]",
    "core-js": "npm:[email protected]",
    "crypto": "npm:[email protected]",
    "events": "npm:[email protected]",
    "file-saver": "npm:[email protected]",
    "fs": "npm:[email protected]",
    "hammerjs": "npm:[email protected]",
    "ng2-toastr": "npm:[email protected]",
    "os": "npm:[email protected]",
    "path": "npm:[email protected]",
    "process": "npm:[email protected]",
    "rxjs": "npm:[email protected]",
    "stream": "npm:[email protected]",
    "string_decoder": "npm:[email protected]",
    "timers": "npm:[email protected]",
    "util": "npm:[email protected]",
    "vm": "npm:[email protected]",
    "web-animations-js": "npm:[email protected]",
    "zone.js": "npm:[email protected]"
  },
  packages: {
      // SKIPPED //
  }
});

Если я правильно понимаю, отсутствующие файлы json обрабатываются, но не включаются, файл "npm:@angular/[email protected]/bundles/http.umd.js" включается, потому что определен в "npm:@angular/http @4.1.3.json", однако по какой-то причине файл определения пакета пропущен в комплекте.

¿ Есть ли какой-либо другой файл, который я должен проверить в обеих средах? Любая идея приветствуется.

ОБНОВЛЕНИЕ: После некоторых тестов я подозреваю, что проблема связана с библиотекой systemjs-builder, а не с jspm.


person Roberto    schedule 09.06.2017    source источник
comment
Почему вы хотите, чтобы эти файлы были включены в пакет? Они просто сообщают jspm, где искать настоящие файлы .js, содержащие модули. Что внутри них, что вам нужно?   -  person Mjh    schedule 09.06.2017
comment
Проблема в том, что без этих файлов, когда я запускаю приложение, браузер (systemjs) пытается загрузить их с сервера, поэтому возвращается 404. Другими словами, с ними в бандле библиотеки регистрируются локально, и systemjs знает, что реализация включена в бандл.   -  person Roberto    schedule 09.06.2017
comment
Итак, давайте попробуем подойти к этой проблеме немного с другой стороны — вы пытаетесь распространять свое приложение в виде одного файла? Если да, вы должны использовать jspm build.   -  person Mjh    schedule 09.06.2017
comment
Мне нужен один файл только для файлов js, типичный пакет, в любом случае, проблема в сборщике SystemJS, разрешение deps в одном окружении включает файлы .json, но не в другом. Пример получен из отладки, библиотека @angular/[email protected]/bundles/core.umd.js должна включать @angular/[email protected] в качестве зависимости, но не включена ни в одну из env.   -  person Roberto    schedule 09.06.2017


Ответы (1)


Наконец, я обнаружил проблему: метод getPackageConfigPath(...) в utils.js в lib systemjs-builder терпит неудачу (ничего не возвращает), если абсолютный путь к каталогу с packageConfigPaths содержит "(".

В Linux задание jenkins имело такое имя, как «MyProject (angular2)», и это приводило к тому, что процесс сборки не мог найти packageConfigPath ни для одной из библиотек в комплекте.

Я открыл задачу в проекте github: https://github.com/systemjs/builder/issues/811

person Roberto    schedule 09.06.2017