Babel 6.x에서 기본 내보내기 값을 필요로합니다.
Babel 5.x에서는 다음 코드를 사용할 수 있습니다.
app.js
export default function (){}
index.js
require('babel/register');
require('./app')();
설치 node index.js
오류없이 사용할 수 있습니다. 그러나 Babel 6.x를 사용하여 다음 코드를 실행하십시오.
index.es6.js
require('babel-core/register');
require('./app')();
오류가 발생합니다.
(...)는 함수가 아닙니다.
이유를 알고 싶어요?
TL; DR
당신은 선호합니다
require('./app').default();
설명
Babel 5는 다음과 같은 시스템 해킹을 사용했습니다 export default
. 모듈에 하나의 내보내기 만 포함되어 있고 기본 내보내기 인 경우 module.exports
. 예를 들어 모듈 app.js
export default function () {}
이것으로 변환됩니다
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = function () {};
module.exports = exports["default"];
이것은 순전히require
-ing Babel-transpiled 모듈 과의 많은 것을 위해 수행했습니다 . 또한 일관성이 없습니다. 모듈에 명명 된 내보내기와 기본 내보내기가 모두 포함 된 경우 require
-d가 될 수 없습니다 .
현실에서 ES6 모듈 사양에 따라, 기본 수출은 없다 어떤 다른 이름으로 명명 된 수출보다가 default
. 타임에 정적으로 해석 될 수있는 문법적인 설탕입니다.
import something from './app';
이것과 같다
import { default as something } from './app';
즉, Babel 6은 모듈을 변환 할 때 상호 운용성 해킹을 중단하기로 결정한 방송합니다. 이제 모듈 app.js 가 다음과 같이 변환됩니다.
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function () {};
보시다시피 더 이상 module.exports
. 에 require
이 모듈, 당신은 할 필요가
require('./app').default();
위의 정답으로 조치를 취하십시오.
기본 내보내기 동작을 사용하는 경우 babel-plugin-add-module-exports 사용을 사용 babel@5
하십시오 .
저에게 꽤 잘 작동합니다.
참고 URL : https://stackoverflow.com/questions/33704714/cant-require-default-export-value-in-babel-6-x
'ProgramingTip' 카테고리의 다른 글
코드 골프 : Conway의 삶의 게임 (0) | 2020.10.15 |
---|---|
이니셜 라이저는 비 정적 필드, 메서드 또는 속성을 참조 할 수 없습니다. (0) | 2020.10.14 |
무한 이미지를 찾기위한 알고리즘 (0) | 2020.10.14 |
Selenium RC로 Google 크롬을 실행하는 방법은 무엇입니까? (0) | 2020.10.14 |
'diff'(또는 기타)를 사용하여 텍스트 파일 보관 문자 수준 차이 가져 오기 오기 (0) | 2020.10.14 |