2017-07-26 17 views
0

フォーマットされていないドキュメントを読み込み、次に良好な形式で書き換えようとしましたが、 次のコードを実行するとエラーCannot read property 'forEach' of undefinedが表示されます。 このエラーがなぜ発生し、解決するのか理解できません。エラー:未定義の 'forEach'プロパティを読み取ることができません

CODE

const testFolder = '/zip_file\ /sit1_Wave2_Settlement_afx_formula\ \(1\)/data_dictionary/CM.173/'; 

var fs = require('fs'); 
var formatedcode = []; 
fs.readdir(testFolder, (err, files) => { 

    files.forEach(file => { 
     console.log(file); 
     var array = fs.readFileSync(testFolder + file).toString().split("\n"); 
     //console.log("\n\n\n",array); 
     var wstream = fs.createWriteStream(file); 

     for (i in array) { 
     var xml = array[i], 
     pp_xml = require('../pretty-data').pd.xml(xml); 
     formatedcode.push(pp_xml); 
     } 

     for (look in formatedcode) { 
     var wstream = fs.createWriteStream(file); 

     wstream.on('finish', function() { 
      console.log('file has been written'); 
     }); 

     wstream.write(formatedcode[look]); 
     wstream.end(); 
     } 
    }); 
}) 

ERROR

files.forEach(file => {^ 

TypeError: Cannot read property 'forEach' of undefined 
    at fs.readdir (C:\Users\Manoj kumar\Downloads\pretty-data\pretty-data\findingxml.js:5:6) 
    at FSReqWrap.oncomplete (fs.js:123:15) 

答えて

0

私はあなたのコードにいくつかの変更を行っています。 wstreamが複数回定義されているなど、予期せぬ結果を引き起こす可能性があることに注意する必要があることがいくつかあります。

問題については、次のようにお試しください。

files.forEach((file) => 
{ 
    console.log(file); 

便宜上、完全なコードブロックを確認してください。

const testFolder = '/zip_file\ /sit1_Wave2_Settlement_afx_formula\ \(1\)/data_dictionary/CM.173/'; 

var fs = require('fs'); 
var formatedcode = []; 
fs.readdir(testFolder, (err, files) => { 

    files.forEach((file) => 
    { 
     console.log(file); 

     var array = fs.readFileSync(testFolder + file).toString().split("\n"); 
     //console.log("\n\n\n",array); 

     var wstream = fs.createWriteStream(file); 
     for (var i in array) { 
      var xml = array[i], 

       pp_xml = require('../pretty-data').pd.xml(xml); 
      formatedcode.push(pp_xml); 

     } 
     for (var look in formatedcode) { 
      wstream = fs.createWriteStream(file); 
      wstream.on('finish', function() { 
       console.log('file has been written'); 
      }); 
      wstream.write(formatedcode[look]); 
      wstream.end(); 
     } 
    }); 
}); 
関連する問題