You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Adobe XD插件开发遇ReferenceError:Color未定义,求排查方案

Adobe XD插件开发:Color类未定义错误的解决方案

嘿,我一眼就瞅出问题所在啦!你碰到的ReferenceError: Color is not defined错误,核心原因是你没有从正确的模块中导入Color类。虽然有些第三方示例里直接用new Color(),但在XD插件开发环境中,Color是scenegraph模块的成员,必须显式引用才能使用。

修正步骤

  1. 从scenegraph模块引入Color类
    你已经导入了scenegraph模块,但没有取出Color类,有两种方式可以解决:

    • 方式一:解构导入Color
      let { Color } = require("scenegraph");
      
    • 方式二:通过scenegraph对象直接访问
      保留原有的let scenegraph = require("scenegraph");,后续创建实例时写new scenegraph.Color()即可
  2. 调整renditions配置中的Color实例代码
    根据你选的导入方式,修改背景色的创建逻辑。

修改后的完整代码

这里用解构导入的方式给你整理好的代码:

async function exportToBmpFunction(selection) {
    if (selection.items.length == 0) {
        return;
    }
    // 导入所需模块,解构取出Color类
    let application = require("application");
    let { Color } = require("scenegraph");
    let fs = require("uxp").storage.localFileSystem;
    
    let shape = selection.items[0];
    let file = await fs.getFileForSaving('what.png', { types: ["png"] });
    let renditions = [{ 
        node: shape, 
        outputFile: file, 
        type: application.RenditionType.PNG, 
        scale: 1, 
        background: new Color('#FF00CD', 1) 
    }];
    application.createRenditions(renditions).then(function(results) {
        // ...处理输出文件的逻辑...
    });
}
module.exports = { commands: { exportToBmp: exportToBmpFunction } };

如果选第二种方式,只需要把background那一行改成:

background: new scenegraph.Color('#FF00CD', 1)

补充说明

官方文档里的示例有时候会省略通用的模块导入代码,默认读者已经清楚要引入对应模块,所以才会看起来直接用Color。以后开发XD插件时,记得所有API类都要先确认所属模块,再进行导入哦!

内容的提问来源于stack exchange,提问作者Chris Rice

火山引擎 最新活动