打字稿,删除错误错误:(54,33)TS2686:' fabric'是指UMD全局,但当前文件是一个模块。请考虑添加导入

时间:2017-01-10 16:48:20

标签: angular typescript angular-cli

所以我收到了这个错误:

import {Canvas} from "fabric";
  

错误:(54,33)TS2686:' fabric'指的是UMD全球,但目前   文件是一个模块。请考虑添加导入。

我在使用TypeScript的Angular项目中使用fabric。 它通过angular-cli手动导入到项目中。

 "scripts": [
        "../node_modules/jquery/dist/jquery.min.js",
        "./libs/jquery.base64.js",
        "./store/signage_sdk.js",
        "../node_modules/fabric/dist/fabric.js",

我也在使用@types/fabric

我怎么能安静这个错误?

TX

肖恩

3 个答案:

答案 0 :(得分:1)

我不确定这是否能解答您的问题,但我认为它可以帮助您解决问题。不幸的是,我仍然没有把它写成评论的声誉,所以这是一个“答案”。

本周我处理了同样的错误。我虽然使用React。在我的情况下,问题是TSLink建议我从我的文件中删除未使用的导入,在一种情况下导入是React本身。因此,即使不需要React,我在该文件中使用的ReactDOM也隐含地想要它。

因此,当我使用ReactDOM属性时,它们会抛出与您的情况相同的错误,仅在我的情况下它是“React”而不是“Fabric”。

我也使用这些模块的类型。

此致

答案 1 :(得分:0)

尝试添加

import * as fabric from "fabric";

位于文件顶部,引用Canvasfabric.Canvas

const canvas = document.getElementById("test_canvas") as HTMLCanvasElement;
const fabricCanvas = new fabric.Canvas(canvas);

另外,使用

// ReSharper disable once WrongRequireRelativePath

如果Resharper抱怨这条路。

答案 2 :(得分:0)

我认为您应该使用

import { fabric } from 'fabric'

然后使用

new fabric.Canvas()

这应该可以工作,并且可以消除错误。