저는 Typescript, ES6 모듈 구문 및 SystemJS/builder를 사용하고 있습니다. Systemjs 번들 글로벌 가져 오기 구성
내가 할 노력하고있어 기본적인 요구 사항
은 다음과 같습니다- 이 @types 패키지를 사용하여 타이프 라이터 코드 완성을 사용 ES6 모듈 가져 오기 구문을 사용
- (글로벌 NPM뿐만 아니라 설치에 대한) (예를 들어
import * as _ from 'lodash'
를) - 빌더가 빌드에서 전역을 제외하고 dev/production의 CDN URL을 사용하여 제대로 가져 왔는지 확인하십시오.
내가 빌드 및 DEV/생산 ENV에 사용하고있어 설정 만 얻을 그것을 위로가는 : 여기에서
System.config({
meta: {
"lodash": {
"format": "global",
"build": false,
"exports": "_"
}
// ...more meta
},
map: {
"lodash": "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js",
// ...more maps
}
});
내가 ES6에 transpiles NPM 작업을 한 후 모든 번들 바벨 플러그인을 통해 하나의 파일로 스크립트는 프로덕션 페이지에 직접로드되어로드됩니다. 문제는 내가 같은 오류가 계속 글로벌 의존 수입 한 번 인해
{default: _ } //_ is the actual lodash export
같은 객체와 CDN 수입을 포장 systemjs에 등 "_.clone는 함수가 아닙니다"나는 변화에 성공했습니다 수입은 import _ from 'lodash'
입니다. 그러나 lodash (또는 angle과 같은 다른 전역 스크립트)가 기본값을 내 보내지 않아 코드 완성을 잃어 버리기 때문에 IDE 오류가 발생합니다.
여기서 systemjs/builder의 요구 사항을 충족시키는 올바른 방법은 무엇입니까?
부수적으로 나는 더 잘 작동한다면 systemjs CDN import 대신 스크립트 태그를 사용하는 것이 좋습니다.
미래의 시청자를 위해 : Aluan의 대답과 TypeScripts 컴파일 모듈 형식을 "시스템", "모듈": "시스템", "시스템"으로 설정하는 것이 효과가있었습니다. 전역에서 syntheticDefaultImports 만 전환 한 경우에는 올바르지 만 '기본'키는 정의되지 않았습니다. –
@RyanQ 그렇다고해서는 안됩니다. SystemJS에서 패키지 구성이 누락되었다고 생각합니다. ''module ''을 사용하는 것이 좋습니다 : "system"'은 좋은 옵션이며 권장됩니다. '--allowSyntheticDefaultImports'는 타입 검사에만 영향을 미친다. SystemJS가 자동으로 기본값을 제공하지 않는다면 설정이 누락 된 것이 거의 확실하지만 현재 가지고있는 것을 보지 않고 무엇을 말하기는 어렵습니다. –
구성 부분에 문제가 없습니다. 내가 해결책을 찾는 것을 끝낼 때 여기에 다시 올릴 것이지만, 현재 나는 dev/production 모두에서 작동 할 좋은 설정을 아직 찾지 못했다. allowSyntheticDefaultImports는 최소한 IDE 측면에서 도움이되었습니다. –