我在项目中使用了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
。
如果您只是看看我的问题并分享一些科学知识,我将非常感激。谢谢!
答案 0 :(得分:1)
ace无法访问文件系统,您需要重新实现该功能,方法是在服务器上运行某些内容,或者将图像加载到浏览器中并检查其大小。