我在脚本中加载了一个节点库,并且在加载了一些依赖于该库的自定义之后立即加载:
var somelib = require('somelib');
// some customizations made to
// somelib's methods
require('./somelib.custom');
somelib.SomeObject = ...
^
ReferenceError: somelib is not defined
我不断收到异常,因为加载是异步完成的,而第二次require
发生在第一次被正确命名之前。有什么好办法解决这个问题?谢谢。
编辑:我的原始代码
我正在尝试使用fabric.js
节点包(基于包站点中的文章)从 json 数据创建 PNG 图像。这是通过使用最初在客户端生成的 JSON 数据加载服务器端结构画布,然后写入文件流来完成的:
var path = require('path');
var fs = require('fs');
var fabric = require('fabric').fabric;
require('./fabric.custom');
var canvas = fabric.createCanvasForNode(400, 400);
var outfile = fs.createWriteStream("image.png");
var filepath = "/path/to/file.json";
fs.readFile(filepath, 'utf8', function(err, json) {
canvas.loadFromJSON(json, function() {
var stream = canvas.createPNGStream();
stream.on('data', function(chunk) {
outfile.write(chunk);
});
});
});
“fabric.custom”文件包含几个自定义织物画布对象,这些对象覆盖了一些织物原型默认值。它们在客户端上运行良好,并且是正确渲染画布所必需的。它看起来像这样:
fabric.TextBox = fabric.util.createClass(fabric.Text, {
type: 'text-box',
// more object specific stuff ...
});
谢谢。