Ошибка: не удалось найти предустановку «es2015» относительно каталога «/ Users / username»

84

При попытке использовать gulp-babel я получаю следующую ошибку:

Ошибка: не удалось найти предустановку "es2015" относительно каталога "/ Пользователи / имя пользователя"

У меня предустановка es2015 установлена ​​глобально и локально, поэтому я не понимаю, почему это может быть проблемой.

Ниже приведены мои настройки gulp и package.json.

var babel = require('gulp-babel');
var es2015 = require('babel-preset-es2015');

gulp.task('babel', function() {
    return gulp.src('./app/main.js')
    .pipe(babel({
        presets: [es2015]
    }))
    .pipe(gulp.dest('dist'));
});

Package.json

  "devDependencies": {
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-es2015-node5": "^1.1.1",
    "browser-sync": "^2.11.0",
    "gulp": "^3.9.0",
    "gulp-babel": "^6.1.1",
    "gulp-stylus": "^2.2.0"
  }

Я использую node v5.1.0 и babel v6.4.0

Вот вывод терминала

терминальный выход

Брайан Дуглас
источник
Я думаю, вам нужно передать строку в presetsмассиве, например ['es2015'], я не совсем уверен
thefourtheye
@thefourtheye Спасибо, но та же проблема, что и строка.
Брайан Дуглас
Вам не нужен глоток. Может быть, это могло быть причинойvar gulp = require('gulp');
Андрей CACIO
@AndreiCacio Я включил gulp, его просто нет во фрагменте кода. Я включил только код, относящийся к компилятору babel.
Брайан Дуглас
3
У вас случайно есть .babelrcфайл в вашем домашнем каталоге? Поскольку именно здесь он ищет предустановку, это означает, что конфигурация исходит именно отсюда.
loganfsmyth

Ответы:

115

Вам нужно всего лишь установить babel-preset-es2015:

Пример использования CLI:

npm install babel-cli babel-preset-es2015
88марин256
источник
3
это решило проблему для меня ... WoW, какое ужасное сообщение об ошибке: Ошибка: не удалось найти предустановку "es2015" относительно каталога "/ путь / к / узлу / пакету / попытка / установить / ... особенно болезненно, когда пытаюсь установить какой-то случайный пакет npm, который использует gulp и babel
Скотт
2
npm WARN больше не рекомендуется babel-preset-es2015@6.24.1: 🙌 Спасибо за использование Babel: сейчас мы рекомендуем использовать babel-preset-env: пожалуйста, прочтите babeljs.io/env для обновления!
Syed
Большое спасибо за это замечательное решение.
Pawan
12

"es2015" в:

    .pipe(babel({
        presets: ['es2015']
    }))

на самом деле является путем, поэтому, если у вас нет предустановки в каталоге / Users / username / es2015, вы должны указать именно на него, например:

.pipe(babel({
    presets: ['../../gulp/node_modules/babel-preset-es2015']
}))

это сработало для меня

Пикард
источник
также работал у меня с использованием абсолютного пути к папке «babel-preset-es2015»
valkalon
Это может показаться слишком упрощенным, поэтому я добавляю его только как комментарий, но убедитесь, что вы все написали правильно. У меня был ярлык «es2105» с транспонированными цифрами, и я некоторое время почесал в затылке.
Роберт Ошлер
12

Чтобы решить эту проблему, вы должны удалить файл .babelrc (скрытый) из каталога «/ Users / username».

Игорь Хомяк
источник
Отлично. это действительно очень скрытая проблема. Решил это для меня
Амгад
8

Я просто использовал именно этот gulpfile.js

var babel = require('gulp-babel');
var es2015 = require('babel-preset-es2015');
var gulp = require('gulp');

gulp.task('babel', function() {
    return gulp.src('./app/main.js')
    .pipe(babel({
        presets: [es2015]
    }))
    .pipe(gulp.dest('dist'));
});

и это сработало для меня. Я только установил babel, babel-preset-es2015и gulp-babel.

Андрей КАСИО
источник
Подскажите свою версию babel и node. У меня такая же настройка, как вы видите. но все же та же ошибка
Брайан Дуглас
Я использую node 4.0 и babel 6
Андрей CACIO
Обновлено описание с выводом на терминал
Брайан Дуглас
Это может быть проблема, связанная с Windows или что-то в этом роде. Я нашел похожую ветку, которую вы можете проверить: github.com/laravel/elixir/issues/354, возможно, она пролит свет на проблему.
Андрей CACIO
1
Загрузка babel-preset-es2015явно, как показано здесь, решила мою проблему.
givemesnacks
7

Проверьте, есть ли у вас файл .babelrc в корневой папке вашего проекта. Если нет, создайте файл .babelrc и добавьте следующее:

{
  "presets": ["es2015"]
}

Это устранило проблему.

Jeyenth
источник
Спас мой день! Спасибо
Mehrnoosh
6

Вы можете попробовать установить es2015и stage-2через

npm i babel-preset-es2015 --save
npm i babel-preset-stage-2 --save
сарик
источник
4

Я столкнулся с той же проблемой, потому что у меня был .babelrcфайл в корне моего каталога.

Чтобы исправить это, добавьте babelrc: falseв параметры babel:

var babel = require('gulp-babel');

gulp.task('babel', function() {
    return gulp.src('./app/main.js')
    .pipe(babel({
        babelrc: false,
        presets: ['babel-preset-es2015']
    }))
    .pipe(gulp.dest('dist'));
});
Том Ван Ромпей
источник
+1 я нашел .babelrcфайл в своем корне, и это была проблема. конфигурация babelrc: falseкажется не работает, но когда я удаляю все работает!
overallduka 07
3

У меня была такая же проблема, и это второе предложение помогло мне заметить мою проблему и, возможно, она ваша тоже.

npm install gulp-babel-es2015Тогда я вообще не включил его в gulpfile.

Тогда babel({presets: ['es2015']})опция - это просто строка, как показано в примерах здесь https://www.npmjs.com/package/gulp-babel .

Вот мой файл gulpfile.

var gulp = require('gulp'),
    babel = require('gulp-babel');

gulp.task('babelify', () => {
    gulp.src('js/*.js')
        .pipe(babel({
            presets: ['es2015']
        }))
    .pipe(gulp.dest('alljs'));
});

gulp.task('default', ['babelify']);

Кроме того, начиная с этой проблемы здесь https://github.com/laravel/elixir/issues/354

Предлагается обновить node до версии 5.xx и npm до 3.xx

ArchNoob
источник
1

Ситуация, когда я сталкиваюсь с этой проблемой, заключается в том, что я переместил файлы из xxxв xxx/server. И тогда xxx/serverя увижу Error: Couldn't find preset "es2015" relative to directory "/Users/username/xxx"ошибку. Настоящая причина в том, что я забыл переместить этот .babelrcфайл в папку xxx. И после того, как я перейду .babelrcна xxx/server, ошибка исчезнет.

счастливый
источник
0

Просто у меня был очень странный. Я установил все инструменты babel одной большой длинной npm installкомандой, и все было установлено без ошибок ... за исключением того, что во время выполнения возникала ошибка, задокументированная в этом потоке.

Я заметил, что версия была 0.0.0 в файле package.json, поэтому я запустил npm install --save-dev babel-preset-es2015снова, и он сработал и поместил ВТОРОЙ ключ в мой файл package.json:

   "devDependencies": {
     "babel-cli": "^6.24.1",
     "babel-core": "^6.24.1",
     "babel-polyfill": "^6.23.0",
     "babel-preset-es2015": "^6.24.1",
     "babel-preset-es2015": "0.0.0",
     "babel-preset-stage-2": "^6.24.1",
     "eslint": "^3.19.0"
   }

Я просто удалил ошибочную запись, и это устранило эту relative to directoryошибку.

agm1984
источник
0

Моя проблема заключалась в том, что другая программа использовала файл, участвующий в процессе компиляции (вероятно, .babelrc). Закрытие нескольких приложений решило мою проблему.

Для меня это был Dropbox или даже редактор скобок с расширением eqFTP.

приветствия

мануман94
источник
0

Babel 7 обновить

Из документации вы должны теперь использовать @babel/preset-envвместо любого другого presetупоминания

Пресет "env" отсутствует уже более года и полностью заменяет некоторые из пресетов, которые мы предлагали / предлагали ранее.

  • babel-preset-es2015
  • babel-preset-es2016
  • babel-preset-es2017
  • babel-preset-latest
  • Комбинация вышеперечисленного ^
yarn add @babel/preset-env

или же

npm install @babel/preset-env
Тед
источник