2016-05-02 31 views
10

我在我的開發工具鏈中使用webpack和babel;運行下面的代碼時:webpack,babel:es6導入與要求爲Fabric.js

import * as fabric from 'fabric'; 

var canvas = new fabric.Canvas('canvas'); 

我得到以下錯誤:

_fabric2.default.Canvas is not a constructor 

而如果我用require('fabric');代替 import相同的代碼工作正常。

我試過不同的方式調用import但他們都沒有工作。

我的棉絨工具抱怨未定義的fabric變量,所以我想正確定義它。令人驚訝的(對我來說),這個代碼 不起作用既不:

var fabric = require("fabric"); 

我碰到下面的錯誤在這種情況下:

fabric.Canvas is not a constructor 

我在做什麼錯?

回答

17

在我的當前設置使用fabric從NPM,我用

import {fabric} from 'fabric'

訪問到面料全局對象。

4

查看源代碼,你可以發現fabric是通過在窗口對象上設置全局來實現的。所以一旦你requireimport你可以直接開始使用結構。如果你想讓它得到很好的定義,你可以從窗口對象中獲得定義。 var fabric = window['fabric']

https://github.com/kangax/fabric.js/blob/master/dist/fabric.js

+0

那麼這意味着fabricjs不符合CommonJS或AMD模塊約定? – mguijarr

+2

查看kcjpop的回答,'從'布料'導入{fabric};'工作正常 – hjing

1

import不正確。以下工作正常:

import 'fabric' 

let canvas = new fabric.Canvas('c', { 
    backgroundColor: 'rgb(100,100,200)', 
    selectionColor: 'blue', 
    selectionLineWidth: 2 
});