2017-05-10 9 views
0

私はNode.jsを使い慣れていないので、コールバックを理解しようとしています。私は自分のコードに何が間違っているのだろうと思っていた。私はディレクトリに拡張子を持たないすべてのファイルを表示することを期待していましたが、私が得たのはundefinedというメッセージでした。Node.js |コールバックが定義されていません

'use strict'; 

const fs = require('fs'); 
const postsDirectory = './app/posts'; 

function listPosts(callback) { 
    let posts = []; 
    fs.readdir(postsDirectory, function(err, files) { 
     if (err) { 
      callback(err); 
     } else { 
      files.forEach(file => { 
       posts.push(file.split('.').slice(0, -1).join('.')); 
      }); 
      callback(posts); 
     }; 
    }); 
}; 

console.log(listPosts()); 
process.exit(0) 

予想される出力:

file1 
file2 
file3 

答えて

1

使用コールバック方法

'use strict'; 

const fs = require('fs'); 
const postsDirectory = './app/posts'; 

function listPosts(callback) { 
    let posts = []; 
    fs.readdir(postsDirectory, function(err, files) { 
     if (err) { 
      return callback(err); 
     } else { 
      files.forEach(file => { 
       posts.push(file.split('.').slice(0, -1).join('.')); 
      }); 
      //check before return here 
      console.log("postttttttttttttttttt", posts); 

      return callback(null, posts); 
     }; 
    }); 
}; 

//Use callback function with params 
listPosts(function(err,result){ 
     if(err){ 
      console.log(err) 
     }else{ 
      console.log(result) 
     } 
}); 
process.exit(0) 
+0

次の私はあなたのコードを試してみましたが、エラーが今なくなっていますが、ファイルの一覧はいえ表示されません。 – sedawkgrep

+0

console.logを使用してデバッグします。ここでファイル –

+0

を読み込みました。私は 'process.exit(0)'を削除しました。ご協力いただきありがとうございます! :) – sedawkgrep

関連する問題