インスタンスメソッドを再帰的に呼び出すときに問題が発生しています。es2015クラスメソッドの再帰メソッド呼び出しがバベルでトランベイルされた
import fs from 'fs';
import fsWatcher from 'filewatcher';
import path from 'path';
export default class SearchService {
initializeFileWatcher(foldersToWatch) {
let result = fsWatcher();
for (var i = 0; i < foldersToWatch.length; i++) {
result.add(foldersToWatch[i]);
}
return result;
}
getFilesFromDirectoriesRecursively(directories, fileExtension) {
let result = [];
for (var i = 0; i < directories.length; i++) {
var dir = directories[i];
var list = fs.readdirSync(dir);
list.forEach(function (file) {
file = dir + '/' + file;
var stat = fs.statSync(file);
if (stat && stat.isDirectory())
result = result.concat(this.getFilesFromDirectoriesRecursively([file], fileExtension).bind(this));
else
if (path.extname(file) === fileExtension)
result.push(file);
});
}
return result;
}
getFilesFromDirectory(directory, fileExtension) {
var result = [];
var files = fs.readdirSync(directory);
for (var i = 0; i < files.length; i++) {
if (files[i].endsWith(fileExtension))
result.push(files[i]);
}
return result;
}
}
コードはバベル-es2015でtranspiledを取得し、電子アプリ環境で実行されます:
コードは次のように見えます。いいえ、私はメソッドを呼び出すときにgetFilesFromDirectoriesRecursivelyののため、トランスコードされたコードは、トランスコードされたコードではなく、es2015のインスタンスを指しています。
この問題を回避するにはどうすればよいですか?
これは匿名機能内で使用するため、「this」はあなたが思うとは言いません。 http://stackoverflow.com/q/3127429/251311 – zerkms
「この問題を回避するにはどうしたらいいですか?」 'list.forEach(function(file){'を 'list.forEach(file => {'。 – noppa