2016-12-13 6 views
0

csvtojson npmパッケージにcsvを渡そうとしたときに誰かが私になぜ./vacancy-data.csv cannot be foundエラーが出るのか説明できますか?CSVファイルにアクセス

CSVは以下のコードと同じディレクトリにある:

var express = require('express'), 
router = express.Router(), 
Converter = require("csvtojson").Converter; 

router.get('/search',function(req,res){ 
    var converter = new Converter({}); 

    converter.fromFile('./vacancy-data.csv',function(err,result){ 
    if (err) { 
     console.log(err) 
    } else { 
     console.log(result); 
    } 
    }); 
}); 

私はrequire('./vacancy-data.csv')を試してみた、またbetter-require NPMパッケージを試してみました。

私はcsvをjsonに変換しようとしていますが、応答でjsonを渡しています。

+0

すべてのセキュリティ設定が正しいことを確認してください。 – sx107

答えて

1

requireの機能には固有のresolving strategyがあります。これは通常のnodejs fsコマンドには適用されません。例えば、このような構造を考えてみます。

-> index.js 
-> routes/ 
    -> router.js 
    -> vacancy-data.csv 

./routes/router.jsrequire('./vacancy-data.csv')を解決するには、NodeJSは、この場合に./routes/ある現在のモジュールのパスから探し始めるだろう。

node index.jsを実行してからHTTPリクエストを行うと、Webサーバーの現在のディレクトリは./になり、converter.fromFile('./vacancy-data.csv')を解決するために使用されます。試す:

var express = require('express'), 
    router = express.Router(), 
    Converter = require("csvtojson").Converter, 
    path = require('path'); 

router.get('/search',function(req,res){ 
    var converter = new Converter({}); 

    converter.fromFile(path.join(__dirname, 'vacancy-data.csv'),function(err,result){ 
     if (err) { 
      console.log(err) 
     } else { 
      console.log(result); 
     } 
    }); 
}); 
__dirname

は常に、現在実行コードが配置されているディレクトリ(この場合<full_path_to_the_project_root>/routes/)に設定されているglobal variableあります。

+0

ありがとう!これはうまくいった! –

関連する問題