2015-06-28 96 views
0

我目前有一個npm包「走」的問題,問題是它應該採取的路徑只能用字符串給出。這是因爲這取決於目錄應在搜索路徑會改變的問題node.js步行路徑變量

var walkers = walk.walk(""+animeDir+"", options); 
walkers.on('file', function(root, stat, next) { 
    files.push(stat.name); 
    next(); 
}); 

我已經嘗試了不同的方法,如:剛剛通過傳遞變量本身

var walkers = walk.walk("F:/" + animeDir, options); 
var walkers = walk.walk("\"animeDir\"", options); // "F:/" was already included 
var walkers = walk.walk("'+animeDir+'", options); 

,最後,雖然我得到一些錯誤,如:binding.readdir(pathModule._makeLong(path), req); TypeError: path must be a string. 我目前用盡想法,我還沒有找到一些幫助。我期待您的回覆,提前謝謝!

+1

什麼是'animeDir'?另外,你試過['path.join'](https://nodejs.org/api/path.html#path_path_join_path1_path2) – laggingreflex

回答

0

假設animeDir(和options)是上述像

var animeDir = 'F:/AnimeMovies'; 

walk.walk(dir, options);函數的第一個參數是必需的是一個字符串(如上面定義的變量),以正確地傳遞一個字符串定義的JavaScript變量作爲一個變量,你不需要""+var+""嘗試:

var walkers = walk.walk(animeDir, options); 

正確的方法來連接字符串到您的字符串變量是+

var walkers = walk.walk(animeDir + '\', options); 

如果你想從字面上傳遞字符串就在那裏試試這個:

var walkers = walk.walk("F:/animeMovies/videos/", options); 

您是否嘗試過這個發現後,被成功地發生調用walk.walk(dir, options);任何錯誤?

walkers.on('errors', function(root, nodeStatsArray, next) { 
    nodeStatsArray.forEach(function (n) { 
    console.error("[ERROR] " + n.name) 
    console.error(n.error.message || (n.error.code + ": " + n.error.path)); 
    }); 
    next(); 
} 
+0

嘿!感謝您的回答,但我在15分鐘前解決了問題。問題在於我的「漫遊」功能在animeDir可能被賦予一個會導致animeDir = undefined的值之前運行。我通過在我的路線中運行我的「步行」功能解決了這個問題,之後給了animeDir一個值。但是,即使給我一些你的時間,我也感謝你! – DCBN

+0

感謝您發佈您的解決方案!很高興你知道了,yep節點的異步處理可以這樣變幻莫測,你必須知道在什麼範圍內定義了什麼等等。幹得好! –