我有一个脚本可以解析xml文件并将图像路径字段复制到新文件中。它在使用bash终端的Windows机器上完全按预期工作。我在Ubuntu机器上使用完全相同的代码和xml文件测试它,我得到一个TypeError。这就是Ubuntu给我带来麻烦的地方:
if (catalogLine.indexOf('<image path="') !== -1){
//if we have an image, read the image file list line by line
var imageCount = 0;
var image = '';
var whitespace = catalogLine.match(/^\s*/)[0].length;
lineReader.eachLine(resources.fileListToCompare, function(imageLine, imageLast, imageCB) {
if (catalogLine.indexOf(imageLine) !== -1) {
//if we match an image, make a copy and store outside of scope
imageCount++;
image = ' '.repeat(whitespace) + '<image path="' + imageLine + '"/>';
}
这是追溯:
/vagrant/ChalkTalkTool/ImageRemoval.js:23
image = ' '.repeat(whitespace) + '<image path="' + imageLine + '"/>'
^
TypeError: Object has no method 'repeat'
at /vagrant/ChalkTalkTool/ImageRemoval.js:23:17
at /vagrant/ChalkTalkTool/node_modules/line-reader/lib/line_reader.js:277:11
at getLine (/vagrant/ChalkTalkTool/node_modules/line-reader/lib/line_reader.js:166:7)
at Object.nextLine (/vagrant/ChalkTalkTool/node_modules/line-reader/lib/line_reader.js:183:7)
at Object.readNext [as _onImmediate] (/vagrant/ChalkTalkTool/node_modules/line-reader/lib/line_reader.js:269:14)
at processImmediate [as _immediateCallback] (timers.js:363:15)
所以我看到错误在行中:
image = ' '.repeat(whitespace) + '<image path="' + imageLine + '"/>';
我可以假设它与空白字符有关,但我想了解为什么会在Ubuntu上发生这种情况,以及解决这个问题的方法,以便我可以使我的代码在不同系统中更具可移植性(我尝试过使用人物
" "
而不是空间无效。
答案 0 :(得分:4)
问题是repeat()函数仅在ES6及更高版本中可用。我假设您运行的Ubuntu实例正在运行ES5。
您可以通过安装polyfill来测试这个理论,或者在代码顶部自己编写一个:
if (!String.prototype.repeat) {
String.prototype.repeat = function(howManyTimes) {
var result = '';
for (var i = 0; i < howManyTimes; i++) {
result += this;
}
return result;
}
}