Вавилонский файл копируется без преобразования

У меня есть этот код:

"use strict";

import browserSync from "browser-sync";
import httpProxy from "http-proxy";

let proxy = httpProxy.createProxyServer({});

и я установил babel-core а также babel-cli глобально через нпм. Дело в том, когда я пытаюсь скомпилировать это на моем терминале:

babel proxy.js --out-file proxified.js

Выходной файл копируется, а не компилируется (я имею в виду, он такой же, как исходный файл).

Что мне здесь не хватает?

7 ответов

Решение

Бабель - это основа трансформации. До 6.x по умолчанию он включал определенные преобразования, но с ростом использования версий Node, которые изначально поддерживают многие функции ES6, стало гораздо важнее, чтобы все было настраиваемым. По умолчанию Babel 6.x не выполняет никаких преобразований. Вы должны указать, какие преобразования нужно выполнить:

npm install babel-preset-env

и беги

babel --presets env proxy.js --out-file proxified.js

или создать .babelrc файл, содержащий

{
    "presets": [
        "env"
    ]
}

и запустить его так же, как вы были раньше.

env в этом случае предустановка, которая в основном говорит, чтобы компилировать все стандартное поведение ES * в ES5. Если вы используете версии Node, которые поддерживают некоторые ES6, вы можете рассмотреть возможность сделать

{
    "presets": [
        ["env", { "targets": { "node": "true" } }],
    ]
}

указать пресету только на обработку вещей, которые не поддерживаются вашей версией Node. Вы также можете включить версии браузера в свои цели, если вам нужна поддержка браузера.

Большинство из этих ответов устарели. @babel/preset-env а также "@babel/preset-react что вам нужно (по состоянию на июль 2019 года)

По состоянию на 2020, Jan:

ШАГ 1: Установите Babel presets:

yarn add -D @babel/preset-env @babel/preset-react

ШАГ 2: Создайте файл: babelrc.js и добавить presets:

module.exports = {
  // ...
  presets: ["@babel/preset-env", "@babel/preset-react"],
  // ...
}

ШАГ 3:- Установите babel-loader:

yarn add -D babel-loader

ШАГ 4:- Добавьте конфигурацию загрузчика в свой webpack.config.js:

{
//...
  module: [
    rules: [
      test: /\.(js|mjs|jsx|ts|tsx)$/,
      loader: require.resolve('babel-loader')
    ]
  ]
//...
}

Удачи...

У меня была та же проблема с другой причиной:

Код, который я пытался загрузить, не находился в каталоге пакета, и Babel по умолчанию не выходит за пределы каталога пакета.

Я решил это, переместив импортированный код, но, возможно, я мог бы также использовать некоторые операторы включения в конфигурации Babel.

Сначала убедитесь, что у вас есть следующее node modules:

npm i -D webpack babel-core babel-preset-es2015 babel-preset-stage-2 babel-loader

Затем добавьте это в ваш конфигурационный файл Webpack (webpack.config.js):

// webpack.config.js
...
module  :  {
  loaders  :  [
    {
      test    :  /\.js$/,
      loader  :  'babel',
      exclude :  /node_modules/,
      options :  {
        presets  :  [ 'es2015', 'stage-2' ] // stage-2 if required
      } 
    } 
  ]
}
...

Рекомендации:

Удачи!

npm install --save-dev babel-preset-node5

npm install --save-dev babel-preset-react

... а затем создание .babelrc с предустановками:

{
  "presets": [
    "node5",
    "react"
  ]
}

... решил очень похожую проблему для меня с Babel 3.8.6и узел v5.10.1

https://www.npmjs.com/package/babel-preset-node5
https://www.npmjs.com/package/babel-preset-react

Та же ошибка, другая причина:

Транспортировка работала раньше, а затем внезапно перестала работать, файлы просто копировались как есть.

Оказывается, я открыл .babelrc в какой-то момент винда решила добавить .txt к имени файла. Теперь, когда .babelrc.txt не был признан вавилонским. Удаление .txt суффикс исправил это.

Исправить ваш.babelrc

{
  "presets": [
    "react",
    "ES2015"
  ]
}

В 2018 году:

Установите следующие пакеты, если вы еще этого не сделали:

npm install babel-loader babel-preset-react

webpack.config.js

{
    test: /\.jsx?$/,
    exclude: /node_modules/,
    use: [
      {
        loader: 'babel-loader',
        options: {
          presets: ['es2015','react']  // <--- !`react` must be part of presets!
        }
      }
    ],
  }

Окончательное решение

Я потратил 3 дня на это

import react from 'react' unexpected identifier

Я пытался изменить webpack.config.js а также package.json файлы и добавление .babelrc, установка и обновление пакетов через npmЯ посетил много, много страниц, но ничего не получилось.


Что сработало? Два слова: npm start. Вот так.

запустить

npm start 

команда в терминале запустить локальный сервер

...

(имейте в виду, что это может не сработать сразу, но, возможно, только после того, как вы поработаете над npm, потому что перед тем, как попробовать это, я удалил все изменения в этих файлах, и это сработало, поэтому после того, как вы действительно закончите, рассматривайте это как свой последний курорт)


Я нашел эту информацию на этой аккуратной странице. Это на польском языке, но вы можете использовать Google Translate на нем.

Другие вопросы по тегам