грешка при компилиране на jspm/ES6, местоположението на пакетите е неправилно

Трудно ми е да накарам jspm_packages да работи правилно в моята jspm конфигурация в моя packages.json. Пиша приложение в EM6 (babel engine).

Имам gulp файл, който поставя моя ES6 javascript в папка, наречена .tmp/scripts:

gulp.task('transpile:app', ['templates'], function() {
  return gulp.src('app/scripts/**/*.js')
    .pipe($.babel({ sourceMap: true }))
    .pipe(gulp.dest('.tmp/scripts'));
});

И след това пакетна задача, която трябва да конвертира файловете в .tmp в папка, наречена dist:

// Bundle javascripts
gulp.task('bundle:app', function() {
  return gulp.src('')
    .pipe($.shell('jspm bundle-sfx app dist/scripts/app.js --minify --skip-source-maps'));
});

Това е мястото, където се проваля.

Изпълнението на jspm bundle-sfx app dist/scripts/app.js --minify --skip-source-maps' подсказва тази грешка:

warn jspm_packages must be specified in the package.json within the baseURL for paths to resolve correctly.
     Building the single-file sfx bundle for app...

err  Error: ENOENT, open '/Users/connorblack/git/**********/jspm_packages/github/marionettejs/[email protected]'
         at Error (native)

Странното е, че този файлов път за jspm_packages търси две директории по-горе, където трябва да бъде, като по този начин предизвиква грешката ENOENT.

Порових се малко в документите и открих, че можете да зададете атрибут "packages" във вашия package.json, което направих и ето как изглежда текущият ми файл:

...
"jspm": {
    "directories": {
      "baseURL": ".tmp/scripts",
      "lib": "app",
      "packages": "jspm_packages"
    },
...

Опитах множество варианти, но всички завършват с подобна грешка. Префиксът ../../ стъпва по-нагоре в моята файлова система, но тъй като командата вече търси две директории по-горе, това не помага.

Както бихте очаквали, премахването на атрибута изцяло от моя package.json премахва предупреждението и променя ENOENT:

     Building the single-file sfx bundle for app...

err  Error: ENOENT, open '/Users/connorblack/git/********/*********/skeleton/.tmp/scripts/jspm_packages/github/marionettejs/[email protected]'
         at Error (native)

където сега изглежда, че търси папката jspm_packages под моя baseURL (.tmp/scripts), където моят процес на гълтане поставя скриптовете на приложението ми, преди да конвертира от ES6 към нормален JS.

Тук съм на края на акъла си. Изглежда не мога да накарам процеса jspm да намери правилно jspm_packages и по този начин не мога да компилирам приложението си.

Всяка помощ ще бъде високо оценена.


person Connor Black    schedule 26.08.2015    source източник
comment
Можете ли да опитате jspm bundle-sfx main dist/scripts/app.js --minify --skip-source-maps вместо това?   -  person vanthome    schedule 28.08.2015


Отговори (1)


Получавах подобен проблем, когато се опитвах

jspm bundle app.js app/app.bundle.js 

Но след това се промених

  "jspm": {
    "directories": {
      "baseURL": "app",
      "packages": "jspm_packages"
    },

до това ..

  "jspm": {
    "directories": {
      "baseURL": "app",
      "packages": "app/jspm_packages"
    },

и пакетирането започна да работи ...

person judek    schedule 03.05.2016