2016-10-28 3 views
1

D3 위에 작은 JS 라이브러리를 작성하여 꺾은 선형 차트를 그리려합니다. 나는 그 장면 전체에 대해 상당히 새로운 것이지만, 나는 "깊은 끝"에서 뛰어서 가장 잘 배울 것이라고 생각했다. 여기 TypeScript D3 v4 가져 오기가 작동하지 않습니다.

는의 내용을 내 package.json

{ 
    "name": "d3play02", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "keywords": [], 
    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "d3-array": "^1.0.1", 
    "d3-axis": "^1.0.3", 
    "d3-request": "^1.0.2", 
    "d3-scale": "^1.0.3", 
    "d3-selection": "^1.0.2", 
    "d3-shape": "^1.0.3", 
    "d3-time-format": "^2.0.2", 
    "rollup": "^0.36.3", 
    "rollup-plugin-node-resolve": "^2.0.0", 
    "uglify-js": "^2.7.4" 
    }, 
    "dependencies": { 
    "@types/d3": "^4.2.37" 
    } 
} 

나는 LineChart.ts라는 파일이 있고 거기에 내가 가진 :

/// <reference path="node_modules/@types/d3/node_modules/@types/d3-request/index.d.ts" /> 
import csv from 'd3-request'; 

class LineChart { 
    data(url: string): DsvRequest { 
     // code to go here 
    } 
} 

을하지만이 날이

말하는 오류를주고있다 module error

그것은 d3-request 모듈을 찾을 수 없다는 것을 밝히지 만, 내가 읽은 것들을 기반으로 설치하고 그것을 가지고 있습니다, 나는 정확하게 가져올 것입니다!

을 당신이 모듈 자체와 해당 정의 파일을 설치해야하는 각 모듈, 모듈의 하위 집합 만 사용하려는 경우 :

+0

'd3'에서 d3으로 가져 오기; d3 라이브러리의 일반 가져 오기에서 작동합니다 ('d3에서 가져 오기 d3'; 작동하지 않음) –

답변

4

귀하의 NPM은 다음과 같이해야합니다 D3와 관련 설치합니다.

예 : npm install d3-array --savenpm install @types/d3-array --save 실제 d3 어레이 모듈은 적절한 종속성을 갖습니다 (위의 스 니펫에 표시된대로 devDependency가 아님). @types의 정의는 사용 사례에 따라 달라지는 --save 또는 --save-dev 일 수 있습니다. 다른 코드에서 사용하는 라이브러리의 경우 적절한 종속성을 사용해야합니다.

모듈 로더와 함께 D3 모듈을 사용하려면 그런 다음 표준 TypeScript 구문을 가져올 수 있습니다.

import * as d3Array from 'd3-array'; 
import {select, Selection} from 'd3-selection'; 

또는 이와 비슷한 방법으로 필요에 따라 가져올 수 있습니다.

좀 더 통합 된 형태로 사용자 정의 번들에 액세스 할 수 있도록 편의를 위해 당신은 간단한 "번들"모듈을 만들 수 있습니다 만 다시 수출을 포함, 당신은 여러분의 필요에이 모듈을 조정할 수 있습니다

// d3-bundle.ts 
export * from 'd3-array'; 
export * from 'd3-axis'; 
... 
export * from 'd3-time-format'; 

export {...} from 'd3-MODULE';

이제는 D3을 사용하려는 모듈에서 적절한 상대 경로를 사용하여 'd3-bundle'을 가져 오면 해당 번들을 통해 입력 한 내용에 액세스 할 수 있습니다 배럴 :

// use-d3.ts 
import { csv, DsvRequest } from './d3-bundle'; // again, use the right relative path for your project 

class LineChart { 
    data(url: string): DsvRequest { 
     // code to go here 
    } 
} 
+0

고맙습니다 @tomwanzek. 당신이 제안한 것을 한 후에, VS 코드는 이제'd3-request'를 찾을 수 있습니다. 그러나 여전히'DsvRequest'를 찾을 수 없습니다! [이에 따르면] (https://github.com/tomwanzek/d3-v4-definitelytyped/blob/master/src/d3-request/index.d.ts) CSV 함수는 다음에 정의 된'DsvRequest'를 반환합니다. 'd3-request' 아니요? – Ciwan

+0

실제로 이름이 잘못되었다고 생각합니다! 'npm install @ types/d3-request'를 실행했을 때 [d3-dsv] (https://github.com/tomwanzek/d3-v4-definitelytyped/blob/master/src/d3-dsv/index)가 있습니다. d.ts) 타이핑 대신 [d3-request] (https://github.com/tomwanzek/d3-v4-definitelytyped/blob/master/src/d3-request/index.d.ts) 타이핑을 사용하십시오! – Ciwan

+1

d3-request에는 d3-dsv에 대한 종속성이 있으며 정의에는 동일한 종속성이 있습니다.방금 전에'npm install --save-dev @ types/d3-request'를 실행하여 로컬 테스트를 만들었습니다. d3 요청은 예를 들어, 'csv' 또는'tsv' 데이터를 얻는 경우, 이들은 d3-dsv에 내장 된 파서와 혼동하지 마십시오. 정의는 [d3-request] (https://github.com/d3/d3-request)와 일치합니다. D3 v3에 비해 D3 v4에 비해 수행 방법에 몇 가지 변경 사항이 있습니다. – tomwanzek

관련 문제