2016-08-11 6 views
0

learnyounodeの一部として小さなモジュールを書いています。しかし、私はそれにアクセスすることができません。モジュールファイルでfuntionを呼び出す必要がありますか?モジュールnode.jsがローカルモジュールにアクセスできない

==> filter.js <== 
var fs = require('fs') , path=require('path') 

dirpath_name=process.argv[2] 
exthide_name="."+process.argv[3] 

var filter_function=function(dirpath_name,exthide_name) { 
fs.readdir(dirpath_name , function(err,list) { 
if(err) console.log(err) 

for(var i in list) { 
    if(path.extname(list[i]) == exthide_name) 
    console.log(list[i]) 
}}); 
} 


module.exports=filter_function ; 

として書か

モジュールは、助けてください

==> filter_use.js <== 
var using = require('./filter.js') 

using.filter_function(process.argv[2],process.argv[3]) 

エラー

[email protected]:~/test/test1$ node filter_use.js 
/home/linuxmen/test/test1/filter_use.js:3 
using.filter_function(process.argv[2],process.argv[3]) 
    ^

    TypeError: using.filter_function is not a function 
     at Object.<anonymous> (/home/linuxmen/test/test1/filter_use.js:3:7) 
     at Module._compile (module.js:541:32) 
     at Object.Module._extensions..js (module.js:550:10) 
     at Module.load (module.js:458:32) 
     at tryModuleLoad (module.js:417:12) 
     at Function.Module._load (module.js:409:3) 
     at Module.runMain (module.js:575:10) 
     at run (bootstrap_node.js:352:7) 
     at startup (bootstrap_node.js:144:9) 
     at bootstrap_node.js:467:3 
    [email protected]:~/test/test1$ 

として使用します。

ありがとうございます。

答えて

0

コードには2つの問題があります。

まず、関数が非同期であるため、コールバックがよりうまく機能します。

var fs = require('fs'), path = require('path'); 

dirpath_name=process.argv[2]; 
exthide_name="." + process.argv[3]; 

var filter_function = function (dirpath_name, exthide_name, callback) { 
    fs.readdir(dirpath_name , function(err,list) { 
     if(err) 
      return callback(err) 

     callback(null, list); 
    }); 
}); 

第二:あなたは簡易印刷varはどのようなモジュールのエクスポートを参照してくださいすることができます

// filter.js 
exports.filter_function = filter_function; 
... 
var filter = require('filter'); 
filter.filter_function(arg1, arg2, function(err, result { ...})) 

// filter.js 
module.exports = filter_function; 
... 
var filter = require('filter'); 
filter(arg1, arg2, function(err, result { ...})) 

下または

などの輸出を使用。

var filter = require(filter); 
console.log(filter); 
+0

ありがとうございました、このコールバックはここで面白いです。このコードを試してみましょう。 –

関連する問題