正确安装后,Fabric JS未在节点上运行

时间:2018-02-17 00:16:38

标签: node.js npm fabricjs

我想在节点服务器上使用fabric js来生成SVG图像。我按照说明在mac环境中的节点上运行fabric js。我试图从nodejs examples下的fabric js文档中运行hello world fabric应用程序。

如果我在节点shell中运行typeof require('canvas');。它返回'功能'正如它应该的那样,根据fabricjs documentation 正在运行typeof require('fabric');也会返回object。我很确定我正确安装了依赖项,但并不完全确定代码未按预期运行的原因。

但是,运行代码会导致此错误:TypeError: fabric.createCanvasForNode is not a function

这是我试图运行的代码。

我将python版本更改为2.7,节点版本为v 9.2.0。所有帮助表示赞赏!

var fs = require('fs'),
    fabric = require('fabric').fabric,
    out = fs.createWriteStream(__dirname + '/helloworld.png');

var canvas = fabric.createCanvasForNode(200, 200);

var text = new fabric.Text('Hello world', {
  left: 100,
  top: 100,
  fill: '#f55',
  angle: 15
});
canvas.add(text);

var stream = canvas.createPNGStream();
stream.on('data', function(chunk) {
  out.write(chunk);
});

2 个答案:

答案 0 :(得分:2)

Dez'Answer几乎使我满意,但这不是一个完整的例子。至少不适合我。这是我深入研究该主题之后的结果:

nullopt

答案 1 :(得分:0)

看到你遇到的问题我明白你使用的是超过2.0.0的版本,因为上述版本似乎已经弃用了方法createCanvasForNode。 您可以通过评估fabric导入来轻松确认,并且看到该方法不再可用。

从现在开始,您可以使用fabric.Canvasfabric.StaticCanvas

var fs = require('fs'),
    fabric = require('fabric').fabric,
    out = fs.createWriteStream(__dirname + '/helloworld.png');

var canvas = new fabric.Canvas(200, 200);
// or either var canvas = new fabric.StaticCanvas(200, 200);

var text = new fabric.Text('Hello world', {
  left: 100,
  top: 100,
  fill: '#f55',
  angle: 15
});
canvas.add(text);

var stream = canvas.createPNGStream();
stream.on('data', function(chunk) {
  out.write(chunk);
});

参考文献1:https://github.com/kangax/fabric.js/issues/3885

参考文献2:https://github.com/kangax/fabric.js/issues/4586