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();
.babelrc
있습니까? 어딘가에 Babel 옵션을 지정하고 있습니까? Babel 6은 기본적으로 아무것도 변환하지 않으며es2015
게시 한 코드에 사전 설정을 지정하지 않기 때문에 묻습니다 .