Babel 파일은 변형되지 않고 복사됩니다.


106

이 코드가 있습니다.

"use strict";

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

let proxy = httpProxy.createProxyServer({});

내가 설치 babel-corebabel-cli세계적으로 NPM을 통해. 요점은 터미널에서 이것을 컴파일하려고 할 때입니다.

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

출력 파일은 컴파일되는 대신 복사됩니다 (즉, 소스 파일과 동일 함).

내가 여기서 무엇을 놓치고 있습니까?


수행 let에 변화를 var하지만 import문은 남아?
runspired

최신 버전의 react에서는 새로운 babel 모듈을 사용하십시오 : stackoverflow.com/a/53927457/6665568 . 더 나은 오류 메시지가 있으며 반응의 새로운 기능을 지원합니다.
바트 Natesh

답변:


165

Babel은 변환 프레임 워크입니다. 6.x 이전 버전에서는 기본적으로 특정 변환을 활성화했지만 기본적으로 많은 ES6 기능을 지원하는 Node 버전의 사용이 증가함에 따라 구성 가능한 것이 훨씬 더 중요해졌습니다. 기본적으로 Babel 6.x는 변환을 수행하지 않습니다. 실행할 변환을 지정해야합니다.

npm install babel-preset-env

그리고 실행

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

또는 다음을 .babelrc포함 하는 파일을 만듭니다.

{
    "presets": [
        "env"
    ]
}

이전처럼 실행하십시오.

env이 경우 기본적으로 모든 표준 ES * 동작을 ES5로 컴파일하라는 사전 설정입니다. 일부 ES6를 지원하는 Node 버전을 사용하는 경우 다음 작업을 고려할 수 있습니다.

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

노드 버전에서 지원하지 않는 항목 만 처리하도록 사전 설정에 지시합니다. 브라우저 지원이 필요한 경우 대상에 브라우저 버전을 포함 할 수도 있습니다.


15
이것은 유용합니다. 왜 그들은 이것을 문서에 넣지 않았습니까? babel-preset을 전 세계적으로 설치하는 것이 안전합니까?
kidcapital 2015

@kidcapital 문서에는 이것을 포함하고 있지만 부수적 인 것 같습니다. 나는 바벨 6.0이 처음 출시되었을 때 올바르게 구성되는 방법을 알아 내기 위해 많은 시간을 보냈다.
nick

이 게시물의 요지는 PR # 72 에 따라 설정 페이지에 정보 상자로 추가되었습니다 . 아주 사소한 개선이지만 어딘가에서 시작해야합니다! 감사합니다 Logan.
nick

7
구성에 대한 관습이 너무 많아서 ... 바벨은 아무것도하지 않습니다-파일을 복사합니까?
alex.p

다른 사람이 대답 할 수 있도록 설정에 대한 모든 정보와 함께 새로운 질문을하십시오.
loganfsmyth

5

이 답변의 대부분은 구식입니다. @babel/preset-env그리고 "@babel/preset-react당신은 (7 월 2019로) 필요합니다.


3

다른 원인으로 동일한 문제가 발생했습니다.

로드하려는 코드는 패키지 디렉토리 아래에 있지 않으며 Babel은 기본적으로 패키지 디렉토리 외부에서 트랜스 파일하지 않습니다.

가져온 코드를 이동하여 문제를 해결했지만 아마도 Babel 구성에 포함 문을 사용할 수도있었습니다.


그것에 대해 자세히 설명해 주시겠습니까? 내 프런트 엔드 코드도 "패키지 디렉터리 아래"가 아니며 제대로 작동합니다. 내 서버 코드에 "import"가 포함되어 있지만 babel-cli가이를 해결하지 못합니다 ...
Philippe

흠, 무엇에 대해 자세히 설명해야할지 모르겠습니까? 바벨은 트랜스 파일을하지 않았습니다. Babel 구성의 모든 소스를 살펴보십시오…
w00t

내가 해결하려는 문제는 내 서버 파일이 여러 폴더로 구성되어 있다는 것입니다. 서버에는 servers.js가 있고 / api / ... stuff ... 메모리에서 실행할 때 각 "가져 오기"또는 "필수" 해당 파일에서 동적으로 확인됩니다. 명령 줄에서 babel을 실행하면 단일 파일 만 출력하지만 상대 가져 오기를 확인하지 않아서 내 서버를 실행하는 데 사용할 수 없습니다 ...
Philippe

3

먼저 다음이 있는지 확인하십시오 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
      } 
    } 
  ]
}
...

참조 :

행운을 빕니다!


2

현재 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')
    ]
  ]
//...
}

행운을 빕니다...



1

동일한 오류, 다른 원인 :

트랜스 파일링은 이전에 작동했지만 갑자기 작동이 중지되었으며 파일은 그대로 복사됩니다.

내가 .babelrc어느 시점에서 열었고 Windows는 .txt파일 이름 에 추가 하기 로 결정했습니다 . 이제 그것은 .babelrc.txt바벨에 의해 인식되지 않았습니다. .txt접미사를 제거하면 수정되었습니다.


0

.babelrc 수정

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

0

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!
        }
      }
    ],
  }

0

궁극적 인 솔루션

나는 이것에 3 일을 낭비했다

import react from 'react' unexpected identifier

나는 수정 webpack.config.jspackage.json파일을 시도하고을 .babelrc통해 패키지를 추가 , 설치 및 업데이트 하려고 시도했지만 npm많은 페이지를 방문했지만 아무것도 작동하지 않았습니다.


무엇이 효과가 있었습니까? 두 단어 : npm start. 맞습니다.

실행

npm start 

터미널 에서 로컬 서버를 시작하는 명령

...

(즉시 작동하지 않을 수도 있지만 아마도 npm에서 작업을 한 후에야 할 수 있습니다.이 작업을 시도하기 전에 해당 파일의 모든 변경 사항을 삭제했고 작동했기 때문에 실제로 수행 한 후에는 마지막으로 처리하십시오. 리조트 )


이 깔끔한 페이지 에서 그 정보를 찾았습니다 . 폴란드어로되어 있지만 자유롭게 Google 번역을 사용하세요.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.