javascript - Fabric.JS 无法使用 Promise 或回调
问题描述
所以我正在使用一个名为fabric.js
(Node.JS,不适用于浏览器)的 Node.JS/NPM 库,它的工作方式很奇怪。
//Make a new Canvas object (`fabric.createCanvasForNode` is not a constructor)
var canvas = new fabric.StaticCanvas(null, {width: 200, height: 200})
//Make a new Rectangle
var rect = new fabric.Rect({
left: 100,
top: 100,
width: 100,
height: 50,
fill: "red"
})
//Put the Rectangle on the Canvas
canvas.add(rect)
//Save the image as a PNG
canvas.createPNGStream().pipe(fs.createWriteStream(__dirname + "/output.png"))
唯一的问题是这个canvas.add()
函数应该返回一个 Promise,但没有。这是一个不是即时的函数,但还不能与 Promises ( canvas.add(...).then() is not a function
) 一起使用。我尝试的下一件事是回调。我试过了:
canvas.add(rect, function (err, canvas) {
console.log("working")
})
随着
canvas.add(rect, function () {
console.log("working")
})
但两者都错误:
C:\Users\me\Documents\my project\node_modules\fabric\dist\fabric.js:3696
obj._set("canvas", this);
^
TypeError: obj._set is not a function
at klass._onObjectAdded (C:\Users\me\Documents\my project\node_modules\fabric\dist\fabric.js:3696:17)
at klass.add (C:\Users\me\Documents\my project\node_modules\fabric\dist\fabric.js:152:22)
at Client.client.on.message (C:\Users\me\Documents\my project\index.js:41:10)
at emitOne (events.js:115:13)
at Client.emit (events.js:210:7)
at MessageCreateHandler.handle (C:\Users\me\Documents\my project\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
at WebSocketPacketManager.handle (C:\Users\me\Documents\my project\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65)
at WebSocketConnection.onPacket (C:\Users\me\Documents\my project\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:330:35)
at WebSocketConnection.onMessage (C:\Users\me\Documents\my project\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:293:17)
at WebSocketClient.internalOnMessage (C:\Users\me\Documents\my project\node_modules\uws\uws.js:103:17)
那我该怎么办?我使用 Promises 和/或回调的方式有问题吗?织物根本不支持它们吗?对此有什么解决方法?
解决方案
推荐阅读
- kubernetes - Kubernetes 数据分区大小
- c++ - CANoe - 无法在 CAPL 脚本中打开 .dll
- database - 为什么 Oracle Database XE 18c 未在 Windows 10 中安装?
- python - 如何检查图像是否包含文字?
- angular - Angular 自定义响应式表单验证器不起作用
- android - Squarespace Announcement Bar cut off on Android Chrome Browser
- ubuntu - vscode 终端为空/不存在
- gradle - Remote gradle build daemon
- selenium - Selenium and AutoHotkey - How to get the size of table rows/column?
- android - Recyclerview with two ViewTypes from two SQL Tables/ Cursors: What is the best way?