2016-08-09 2 views
4

Я пытаюсь импортировать d3 v4 в проект с использованием jspm и systemjs. Я могу получить d3 импортированы правильно, используя этотd3 V4.2.1 Ошибка импорта текста в стилеScript 2.0 d3-selection-multi

import * as d3 from 'd3'; 

Это работает, и это позволяет мне сделать выбор и т.д. Я попытался с помощью функции атр и передавая ему объект, который не работал. Я обнаружил, что d3 v4 включает это как отдельный модуль.

После загрузки этого модуля d3-selection-multi с jspm. Я пытаюсь импортировать его в свой проект так.

import * as d3 from 'd3'; 
import 'jspm_packages/npm/[email protected]'; 

тогда я пытаюсь использовать функцию AttrS, но консоль регистрирует следующую ошибку

(index):40 Error: (SystemJS) d3.selectAll(...).data(...).style(...).attrs is not a function(…)

Я также получаю ошибку компиляции, которые я получаю все время, но все же они всегда компилироваться и пробелов кода

error TS2307: Cannot find module 'd3' 
error TS1110: Type expected 

Может ли кто-нибудь объяснить, что я делаю неправильно, и предложить решение?

+0

Не причина вашей проблемы, но если этот стиль также использует объект, он должен быть «стилями». –

+0

@Gerardo Furtado Да, но как заставить их работать, не выкидывая ошибку. – Dblock247

+0

Сначала проверьте, действительно ли мы загружаем выбор. Создайте простой код, например 'var test = d3.select (" foo "). Attrs ({" bar ":" baz}); 'и посмотреть, работает ли он. –

ответ

1

Следующие должны работать

import * as d3 from 'd3'; 
    import 'd3-selection-multi'; 
+2

angular-cli жалуется на это. '__WEBPACK_IMPORTED_MODULE_4_d3 __. select (...). attrs не является функцией' :-( –

+1

@ ØysteinAmundsen Вы когда-нибудь рассматривали эту проблему? 'm испытывает ту же самую запутанную проблему. – Cowman

+1

@Cowman Я отправил свое решение в качестве ответа здесь: http://stackoverflow.com/questions/38842984/d3-v4-2-1-typescript-2-0-error-importing -d3-selection-multi/41032977 # 41032977 –

1

Мне пришлось создать файл «bundle» и импортировать его вместо импорта отдельных пакетов d3. Это, вероятно, не идеальна, но она работает (я закомментировать пакеты, которые мне не нужны, для того, чтобы сэкономить на пространстве):

// export * from 'd3-array'; 
// export * from 'd3-axis'; 
// export * from 'd3-brush'; 
// export * from 'd3-chord'; 
// export * from 'd3-collection'; 
// export * from 'd3-color'; 
// export * from 'd3-dispatch'; 
// export * from 'd3-drag'; 
// export * from 'd3-dsv'; 
// export * from 'd3-ease'; 
// export * from 'd3-force'; 
// export * from 'd3-format'; 
// export * from 'd3-geo'; 
// export * from 'd3-hierarchy'; 
// export * from 'd3-interpolate'; 
// export * from 'd3-path'; 
// export * from 'd3-polygon'; 
// export * from 'd3-quadtree'; 
// export * from 'd3-queue'; 
// export * from 'd3-random'; 
// export * from 'd3-request'; 
// export * from 'd3-scale'; 
export * from 'd3-selection'; 
export * from 'd3-selection-multi'; 
export * from 'd3-shape'; 
// export * from 'd3-time'; 
// export * from 'd3-time-format'; 
// export * from 'd3-timer'; 
// export * from 'd3-transition'; 
// export * from 'd3-voronoi'; 
// export * from 'd3-zoom'; 

Чтобы использовать это, я просто должен:

import * as D3 from './d3.bunde.ts'; 

PS Наверное, не имеет значения, но я строю свой проект с помощью углового кли.

+0

Это полезно для меня! ddition Я добавил их к входу моих поставщиков в мою конфигурацию webpack, поэтому он не помещает код d3 в мою запись приложения. – Cowman

Смежные вопросы