_iteratorError undefined不是一个函数

下面的代码取一个文件的内容,replace一些字符,并输出结果:

的test.txt:

# Title ## Title 2 Paragraph 

index.js:

 #!/usr/bin/env node require('babel/polyfill') 'use strict' var fs = require('fs') , filename = process.argv[2] if (process.argv.length < 3) { console.log('Usage: node ' + process.argv[1] + ' FILENAME') process.exit(1) } function massReplace(text, replacementArray) { let results = text for (let [regex, replacement] of replacementArray) { results = results.replace(regex, replacement) } return results } function transformHeadings(text, orig) { return massReplace(text, [/^## (.*)/gm, '<h2>$1</h2>'], [/^# (.*)/gm, '<h1>$1</h1>'] ] ) } fs.readFile(filename, 'utf8', function(err, data) { if (err) throw err data = data.split(/\n\n/gm) var tree = data.slice() console.log(transformHeadings(data, tree)) }) 

我得到这个错误:

 alex@alex-K43U:~/node/m2n$ babel-node index4.js test.txt /home/alex/node/m2n/index4.js:41 throw _iteratorError; ^ TypeError: undefined is not a function at massReplace (/home/alex/node/m2n/index4.js:17:4) at transformHeadings (/home/alex/node/m2n/index4.js:30:2) at /home/alex/node/m2n/index4.js:39:3 at fs.js:336:14 at FSReqWrap.oncomplete (fs.js:99:15) 

不知道问题是什么,也没有throw _iteratorError意思。

我正在使用Babel来parsingES6代码。

可能是什么问题呢?

编辑:

这是编译的function。 但我仍然看不到问题:

 function massReplace(text, replacementArray) { var results = text; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = replacementArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step$value = _slicedToArray(_step.value, 2); var regex = _step$value[0]; var replacement = _step$value[1]; results = results.replace(regex, replacement); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator["return"]) { _iterator["return"](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return results; } 

 require ('babel/polyfill'); 

对于某些function,Babel使用一个小的支持库。 有关更多信息,请参阅https://babeljs.io/docs/usage/polyfill/和http://babeljs.io/docs/usage/runtime/

希望有所帮助!

编辑:

所以我注意到,实际上transformHeadings没有被传递正确的参数。 text应该是一个string,而不是一个数组。 你需要一次迭代data而不是传入整个数组。

你得到这个错误的原因是因为一个数组没有replace方法,所以引发了一个exception。 我不清楚巴贝尔为什么不在这里重新提高错误,这肯定会增加混乱。