ACE编辑器 - update_image_size无法正常工作

时间:2017-01-31 06:15:23

标签: javascript node.js ace-editor

我在项目中使用了ace编辑器 - 包括enableEmmet: true

https://ace.c9.io/demo/emmet.html

但显然行动update_image_size不起作用,而是收到此错误消息:

TypeError: Cannot read property 'locateFile' of undefined

代码段:https://github.com/cloud9ide/emmet-core/blob/master/emmet.js#L9972-L10002

/**
 * Returns image dimensions for source
 * @param {IEmmetEditor} editor
 * @param {String} src Image source (path or data:url)
 */
function getImageSizeForSource(editor, src, callback) {
    var fileContent;
    var au = require('actionUtils');
    if (src) {
        // check if it is data:url
        if (/^data:/.test(src)) {
            fileContent = require('base64').decode( src.replace(/^data\:.+?;.+?,/, '') );
            return callback(au.getImageSize(fileContent));
        }

        var file = require('file');
        var absPath = file.locateFile(editor.getFilePath(), src);
        if (absPath === null) {
            throw "Can't find " + src + ' file';
        }

        file.read(absPath, function(err, content) {
            if (err) {
                throw 'Unable to read ' + absPath + ': ' + err;
            }

            content = String(content);
            callback(au.getImageSize(content));
        });
    }
}

指示var file = require('file');的日志始终为 undefined

如果您只是看看我的问题并分享一些科学知识,我将非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

ace无法访问文件系统,您需要重新实现该功能,方法是在服务器上运行某些内容,或者将图像加载到浏览器中并检查其大小。