現在、Node.jsを使用していますが、この問題は解決していません。範囲外の変数にcsvtojsonコンバーターの値を渡す
私は他のJSファイルで何度も呼び出すことができる別のモジュールとしてcsvtojsonコンバータ(https://github.com/Keyang/node-csvtojson)を使用しています。ここで
は私tools.jsです:
module.exports = {
\t csvToJson: function (csvPath) {
\t \t var Converter = require('csvtojson').Converter;
\t \t var converter = new Converter({});
\t \t var transfer = "DEFAULT";
\t \t converter.fromFile(csvPath, function(err, result){
\t \t \t if (err) {
\t \t \t \t return console.log(err);
\t \t \t }
\t \t \t else {
\t \t \t \t transfer = result;
\t \t \t }
\t \t });
\t \t return transfer;
\t }
};
そして、ここでは、私はそれを呼び出す方法です:
var countriesCsvFile = path.join(__dirname, '..', 'testDataFiles', 'countries.csv');
//GRAB TOOLS
var tools = require('../app/tools');
console.log(tools.csvToJson(countriesCsvFile));
結果は常にコンバータがそれに触れていないことを示す "DEFAULT"値です。
私はそれを関数の戻り値として渡し、さらにファイルを作成せずにその場でデータを処理し、それを読み取ることができます。 確かにいくつかの範囲の問題ですが、私の頭皮を数時間掻き、質問をブラウジングした後、私は何か遠隔的に有用なものを取り出すことができませんでした。
また別の注記:私は、transfer = resultの代わりにconsole.log(result)を呼び出すと、私の貴重で望ましいデータが表示されます。
非同期コーディングをご覧ください。基本的には、 'transfer'を返すとCSVファイルの読み込みが完了しません。 – Sirko