- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个最近从 Angular 5 升级到 6 的项目。我正在添加一个新功能,它需要我从数据中绘制图像,所以我一直在尝试使用 Canvas 和 SVG DOM 对象来完成这个。 FabricJS 有很多我需要的功能。
我昨晚尝试将其添加到项目中。我从网站 v2.3.3 下载了 FabricJS 的完整 DEV/MIN 版本。然后我在我的 node_modules 文件夹中创建了一个“fabric”文件夹,并将 *.js 文件放在那里。我编辑了我的 angular.json 文件以包含以下内容:
"scripts": [
"node_modules/fabric/fabric.js"
]
然后创建一个 typings.d.ts 文件:
declare const fabric: any;
最后,在我的模块中,我这样导入它:
import * as fabric from 'fabric';
我在页面上放置了一个canvas元素并命名为“C”
<canvas id="c"></canvas>
然后尝试使用结构代码:
// create a wrapper around native canvas element (with id="c")
const canvas = new fabric.Canvas('c');
当 fabric 代码被执行时,它会抛出一个错误:
***ERROR TypeError: fabric__WEBPACK_IMPORTED_MODULE_2__.Canvas is not a constructor
at SafeSubscriber._next***
我不太确定这是什么意思。我花了一些时间寻找答案,但并没有找到太多关于这个的答案,尽管我确实找到了这个页面:
Fabric.js with Typescript and Webpack: Canvas is not a constructor
这听起来很像我的问题,但我对 Angular 还是很陌生,并不总是了解发生了什么。在那篇文章中,他们讨论了如何更改 webpack.mix.js 文件。但是我没有这样的文件,而且我知道 Angular 6 有一个新版本的 WebPack,也许这是破坏性的东西?
关于如何解决这个问题有什么想法吗?从哪里开始?
最佳答案
所以首先要检查的是导入语句。
Fabric 进口为
从“织物”导入{织物};
关于一般的 webpack 配置和结构,请看这里:
https://github.com/fabricjs/fabricjs-webpack
如果需要,您可以在此处找到直接使用 npm 模块的配置示例,或者无论如何,它将帮助 webpack 避免尝试捆绑节点依赖项。
关于angular - "Canvas is not a constructor"错误 - 将 Fabric JS 与 Angular 6 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212938/
我想在我的单元测试中模拟一个遗留对象。这是构造函数: public Class LegacyClass{ public LegacyClass(Object... obj) {
此处说明https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function函数对象实例的构造函数属性“指定创建对
有没有办法从子类中的构造函数分配在父类(super class)中声明的实例变量?我已经习惯使用 BUILD() 作为构造函数,但我想知道这是否是个好主意。 IE: use v6; clas
鉴于以下情况: type AStruct struct { m_Map map[int]bool } 在这种情况下,AStruct的实例在AStruct.m_Map初始化之前不能使用: m_M
我是 Android 新手,我正在尝试学习如何使用 Gson 解析 API 调用。我已经阅读了一些内容,我正在尝试遵循这个示例:http://www.javacodegeeks.com/2011/01
我正在阅读 this文章,我不知道下面这行是做什么的。即使我删除了这一行,我也看不出有什么不同。 this.constructor.prototype.constructor.apply(this,A
这个问题已经有答案了: JsonMappingException: No suitable constructor found for type [simple type, class ]: can
我正在处理我的第一个 Flutter 项目,我正在构建一个登录页面,我创建了一个变量来存储一个 TextFormFieldController,但我收到了上面的错误,因为我删除了构造函数。当我返回这个
假设我们有以下主要和次要构造函数: open class Animal(val name:String){ internal constructor(message:InputStream): t
为什么默认复制构造函数不调用 monster 的基构造函数,但是当我在 troll 中包含一个用户定义的复制构造函数时,它会调用父级(即: 怪物) 构造函数? 我认为它的工作原理如下:创建基础对象,然
这个问题在这里已经有了答案: Is there a difference between foo(void) and foo() in C++ or C? (4 个答案) 关闭 8 年前。 我注意到
我将 T4MVC 与 MVC2 一起使用。 我有以下构建 block : 一个简单的实体接口(interface),它定义了每个 POCO 实体必须有一个 long Id属性(property): p
以下代码返回一个错误: “构造函数调用必须是构造函数中的第一个语句。” 我不明白。我的代码中的构造函数是第一条语句。我究竟做错了什么? public class labelsAndIcons exte
我是 kotlin 的新手,对它包含的所有有用的语法糖和功能感到惊讶。 但是每当我声明一个构造函数时,我都必须独立地将我的所有字段设为私有(private)。 class Result(private
作为主题,相关代码为: #include class ABC { public: ABC() { std::cout<< "default con
在 Haxe 中,我创建了一个名为 的类。我的类 喜欢: class MyClass { var score: String; public function new (score:
不确定为什么会这样,尝试删除所有 new 实例,从 const ect 切换到 let。可以运行站点,但是当我通过 html 表单运行发布请求时,在“const user = new UserSche
我是 Javascript 的新手,我正在尝试深入挖掘并理解继承、构造函数和原型(prototype)链。所以,我创建了一个构造函数, var a = function(){this.integer=
我知道 JavaScript 中的函数有双重生命,第一个是函数(作为创建实例的第一类事物),第二个是普通对象。 但是我很惊讶地看到下面控制台的输出。 function A() { consol
这个问题在这里已经有了答案: Why can't I access a property of an integer with a single dot? (5 个答案) 关闭 5 年前。 为什么
我是一名优秀的程序员,十分优秀!