我在node.js应用中使用csv2geojson模块来读取csv文件并最终将其解析为geojson。但是在运行我的应用程序时会在标题中出现错误。
以下是运行代码的错误:
var csv2geojson = require('csv2geojson');
var fs = require('fs');
var csvfile = fs.readFile(__dirname + '/../public/json/locations/wireless-locs.csv', 'utf8');
var geoJson = csv2geojson.csv2geojson(csvfile, function(err, results) {
console.log(geoJson);
});
控制台出错:
/Users/../../../sites/node/app/node_modules/csv2geojson/index.js:109
if (!parsed.length) {
^
TypeError: Cannot read property 'length' of undefined
我的csv文件示例:
LAT LON NAME TIME CELL_ID
-32.62678025 151.39455296 LOC1 2017-06-14 1234
-37.80774968 140.72863036 LOC2 2017-06-14 1235
答案 0 :(得分:0)
请尝试以下代码:
var csv2geojson = require('csv2geojson');
var fs = require('fs');
var csvfile = fs.readFileSync(__dirname + '/../public/json/locations/wireless-locs.csv', 'utf8');
console.log(csvfile);
var geoJson = csv2geojson.csv2geojson(csvfile, function(err, results) {
console.log(results);
});
您的代码有两个问题:
一个是您正在使用异步读取文件功能,您需要将其更改为同步版本或在回调函数中编写以下代码。
另一个是你应该记录结果而不是geoJson变量,结果是转换数据的结果。
谢谢!
答案 1 :(得分:0)
调用fs.readFile
时,您应该检查是否有任何错误。你可以通过修改函数调用来包含一个包含error
和data
参数的回调来做到这一点:
fs.readFile(__dirname + '/../public/json/locations/wireless-locs.csv', 'utf8', (err, data) => {
if (err) throw err;
var geoJson = csv2geojson.csv2geojson(data, function(err, results) {
if (err) throw err;
console.log(results);
});
});