我在我的开发工具链中使用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工具抱怨未定义的fabric
变量,所以我想正确定义它。令人惊讶的是(对我而言),这段代码
不起作用:
var fabric = require("fabric");
在这种情况下我收到以下错误:
fabric.Canvas is not a constructor
我做错了什么?
答案 0 :(得分:24)
在我目前使用NPM fabric
的设置中,我使用
import {fabric} from 'fabric'
访问fabric全局对象。
答案 1 :(得分:4)
查看源代码,您可以通过在窗口对象上设置来确定fabric
是全局的。因此,一旦require
或import
,您就可以直接开始使用结构了。如果您希望它被很好地定义,您可以从window对象中获取定义。
var fabric = window['fabric']
https://github.com/kangax/fabric.js/blob/master/dist/fabric.js
答案 2 :(得分:2)
您的import
不正确。以下工作正常:
import 'fabric'
let canvas = new fabric.Canvas('c', {
backgroundColor: 'rgb(100,100,200)',
selectionColor: 'blue',
selectionLineWidth: 2
});