2016-12-13 72 views
0

有人可以向我解釋爲什麼我在獲取./vacancy-data.csv cannot be found錯誤時試圖將csv傳遞到csvtojson npm包中?訪問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.js解決require('./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); 
     } 
    }); 
}); 

__dirnameglobal variable其總是被設置爲其中當前執行的代碼所位於的DIR(01​​在這種情況下)。

+0

非常感謝!這工作! –