【问题标题】:Using custom fabric.js classes in node.js在 node.js 中使用自定义的 fabric.js 类
【发布时间】:2013-01-26 10:33:12
【问题描述】:

我在我的应用程序中使用了几个自定义fabric.js 类来呈现和封装一些额外的数据属性as suggested here

现在我有了这些生成的 JSON 数据,我想渲染画布并使用 node.js 和 fabric 的 npm 包将其写入服务器上的 PNG 图像。这适用于 fabric.Rectfabric.Text 等内置结构类,但我的自定义不断抛出奇怪的 require 错误。

自定义文件基本上是这样的:

fabric.custom.js

// without this node raises "fabric is not defined" error
var fabric = fabric || {};

if (typeof exports !== 'undefined') {
  exports.fabric = fabric;
}

// actual implementations
fabric.NamedImage = fabric.util.createClass(fabric.Image, {

  type: 'named-image',

  // custom overrides
  // ...
});

并像这样加载到我的节点脚本中:

var fabric = require('fabric').fabric;
require('./fabric.custom');

// read JSON and write to PNG ..

当我运行它时,出现以下异常:

/Users/sa125/code/nodetest/fabric.custom.js:13
fabric.NamedImage = fabric.util.createClass(fabric.Image, {
                               ^
TypeError: Cannot call method 'createClass' of undefined
    at Object.<anonymous> (/Users/sa125/code/nodetest/fabric.custom.js:13:32)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/sa125/code/nodetest/test.js:4:16)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)

我需要做些什么才能将我的客户端 fabric.js 代码与 node.js 一起使用?

【问题讨论】:

    标签: node.js fabricjs serverside-javascript


    【解决方案1】:

    这仅仅是因为 node.js 没有global scope。在浏览器中发生的是原始结构变量在全局命名空间下的 DOM 中分配。这意味着在您的自定义模块中,fabric 变量已经存在。

    在 node.js 中,该变量不存在,因为每个文件都有自己的本地范围。当 node.js 在自定义文件中查找 fabric 变量时,由于尚未创建,因此无法找到它。您需要做的是在第一个 require 之后使用您的附加方法扩展 fabric 的原始对象,或者在 require 上创建一个新变量并将两个对象合并在一起。无论哪种方式,require('...'); 在 node.js 中如果没有分配给变量是无用的。

    【讨论】:

    • 除非模块覆盖全局变量,否则它是没用的。对于 colors 模块,它不需要您分配给变量,因为它添加到 String.prototype。
    猜你喜欢
    • 2019-03-29
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2021-08-16
    • 2014-01-27
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多