TypeError:无法读取未定义的属性“长度”-在节点 js 中使用 csv2geojson
2017-06-27
712
我在 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
2个回答
您应检查调用
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);
});
});
Pat Needham
2017-06-27
尝试以下代码:
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 变量,结果是转换数据的结果。
谢谢!
Chenglong Wei
2017-06-27