Ответ 1
В моей текущей настройке, используя fabric
из NPM, я использую
import {fabric} from 'fabric'
для доступа к глобальному объекту.
Я использую webpack и babel в своей цепочке инструментов разработки; при запуске следующего кода:
import * as fabric from 'fabric';
var canvas = new fabric.Canvas('canvas');
Я получаю следующую ошибку:
_fabric2.default.Canvas is not a constructor
В то время как тот же код работает нормально, если я использую require('fabric');
вместо
import
.
Я пробовал разные способы вызова import
, но никто из них не работал.
Мой инструмент linting жалуется на переменную undefined fabric
, поэтому я хотел бы, чтобы она была правильно определена. Удивительно (для меня), этот код
тоже не работает:
var fabric = require("fabric");
В этом случае я получаю следующую ошибку:
fabric.Canvas is not a constructor
Что я делаю неправильно?
В моей текущей настройке, используя fabric
из NPM, я использую
import {fabric} from 'fabric'
для доступа к глобальному объекту.
Заглядывая в исходный код, вы можете понять, что fabric
делается глобальным, устанавливая его на объект окна. Поэтому, когда вы require
или import
, вы можете начать использовать ткань напрямую. Если вы хотите, чтобы он был четко определен, вы можете получить определение из окна.
var fabric = window['fabric']
https://github.com/kangax/fabric.js/blob/master/dist/fabric.js
Ваш import
неверен. Следующее прекрасно работает:
import 'fabric'
let canvas = new fabric.Canvas('c', {
backgroundColor: 'rgb(100,100,200)',
selectionColor: 'blue',
selectionLineWidth: 2
});