我想在节点服务器上使用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);
});
答案 0 :(得分:2)
Dez'Answer几乎使我满意,但这不是一个完整的例子。至少不适合我。这是我深入研究该主题之后的结果:
nullopt
答案 1 :(得分:0)
看到你遇到的问题我明白你使用的是超过2.0.0的版本,因为上述版本似乎已经弃用了方法createCanvasForNode
。
您可以通过评估fabric
导入来轻松确认,并且看到该方法不再可用。
从现在开始,您可以使用fabric.Canvas
或fabric.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);
});