2016-10-07 2 views
1

D3 4.0 및 Ionic2/Angular2 프로젝트의 import 문에 문제가 있습니다.d3 4.0 - import 문에서 __moduleExports 래퍼를 제공합니다.

올바른 import 문을 사용하고 있으며 모든 것이 컴파일됩니다. 런타임에 xml 기능이 d3Request$2.xml에 존재하지 않는,

var d3Request$1 = unwrapExports(d3Request); 

var d3Request$2 = Object.freeze({ 
    default: d3Request$1, 
    __moduleExports: d3Request 
}); 

... 
d3Request$2.xml('assets/mysvg.svg') 
    .mimeType("image/svg+xml") 
    .get(function (error, xml) { 
     if (error) throw error; 
     document.body.appendChild(xml.documentElement); 
    }); 

그러나 :

import * as d3Request from 'd3-request'; 

export class HomePage { 

    constructor() { 

    d3Request.xml('assets/mysvg.svg') 
     .mimeType("image/svg+xml") 
     .get(function(error, xml) { 
     if (error) throw error; 
     document.body.appendChild(xml.documentElement); 
     }); 
    } 
} 

는 컴파일 가져옵니다. d3Request$2.__moduleExports.xml에만 있지만 코드는 컴파일되지 않습니다. 뭐라 구요?

나는 또한 컴파일했지만 아직 작동하지 않는 import d3Request from 'd3-request'을 시도했습니다. 결과 : d3Request$1 말까지가 정의되고 있기 때문에

var d3Request$1 = unwrapExports(d3Request); 

... 
d3Request$1.xml('assets/emojis/laughing.svg') 
    .mimeType("image/svg+xml")... 

그러나, 이것은 여전히 ​​작동하지 않습니다. d3Request.xml이 존재하지만 코드가 컴파일되지 않으면 d3Request$1.xml으로 컴파일됩니다!

+0

다음을 시도하십시오.''d3 '에서 d3으로 가져 오기 *; d3.request (...)''' – BuildingJarl

+0

아니요, 컴파일되지 않습니다. – parliament

답변

1

unwrapExports(...)__moduleExports은 ES 모듈 버전이 아니라 CommonJS 파일을 가져오고 rollup-plugin-commonjs으로 변환한다는 것을 나타냅니다. 그것은 작동하지 않는 것은 이상하지만, 올바른 파일을 가져 와서 변환을 완전히 무시할 수 있습니다.

롤업 설정 파일을 보지 않아도 확신 할 수 없지만 rollup-plugin-node-resolve을 사용하고 계신 것 같습니까? 그렇다면 해결 방법은 jsnext: true 옵션이 설정되어 있으므로 롤업에서 this file이 아닌 this file을 찾을 수 있도록하는 것입니다.

+0

감사합니다. ionic-app-scripts를 통해 Ionic2에 빌드 된 구성을 롤업으로 사용하고 있습니다. 설정은 https://github.com/driftyco/ionic-app-scripts/blob/master/config/rollup.config.js에 있습니다. 그것은 내 node_modules/@ ionic/app-scripts/config에서 올바르게로드되었다고 가정 할 때, 당신이 말한 것처럼 파일이 rollup-plugin-node-resolve에'jsnext : true'를 전달하는 것 같습니다. – parliament

+0

매우 이상합니다. 나는 이색 사용자가 아니기 때문에 여기에 다른 것이 있는지 말할 수 없습니다. 시도 할 수있는 또 다른 방법은 명시 적으로 파일을 가리키는 것입니다. 'd3-request/index.js '에서 d3Request로 가져 오기 * –

관련 문제