2016-12-13 69 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

非常感谢!这工作! –