标签: node-csv-parse

类型错误:解析不是 csv-parse 上的函数

我在使用以下命令设置一个简单的应用程序后遇到了这个问题:

  • 节点 v16.13.2
  • npm v8.1.2
  • csv-parse v5.0.4
    开启
  • VSCode v1.63.2

代码是:

const parse = require('csv-parse');
const fs = require('fs');

const results = [];

fs.createReadStream('kepler_data.csv')
    .pipe(parse({
        comment: "#",
        columns: true,
    }))
    .on('data', (data) => {
        results.push(data);
    })
    .on('error', (err) => {
        console.log(err);
    })
    .on('end', () => {
        console.log(results);
        console.log('Done!');
    });
Run Code Online (Sandbox Code Playgroud)

运行它的结果是:

index.js:7
    .pipe(parse({
          ^

TypeError: parse is not a function
    at Object.<anonymous> (/home/jadeye/node.js_workspace/PLANETS-PROJECT/index.js:7:11)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
Run Code Online (Sandbox Code Playgroud)

搜索 …

javascript csv node.js node-csv-parse

12
推荐指数
1
解决办法
1万
查看次数

csv-parse 解析的对象的第一个属性不可访问

我正在使用csv-parse解析包含以下内容的 csv 文件-

userID,sysID
20,50
30,71
Run Code Online (Sandbox Code Playgroud)

但是,在返回的对象上,无法访问从第一列创建的属性userID

这是我的代码——

userID,sysID
20,50
30,71
Run Code Online (Sandbox Code Playgroud)

输出 -


async function main(){
    let systemIDs = await getSystemIds('./systems.csv');     
    console.log(`Scanning data for ${systemIDs.length} systems..`);

    console.log(systemIDs[0]);
    console.log(systemIDs[0].userID); // This prints undefined 
    console.log(systemIDs[0].sysID);  // This prints the correct value
}

async function getSystemIds(path){
    let ids= [];
    await new Promise ((resolve,reject)=>{        
        const csvParser = csvParse({columns:true, skip_empty_lines: true});
        FS.createReadStream(path)
        .pipe(csvParser)
        .on('readable', ()=>{
            let record ;            
            while(record = csvParser.read()) {
                ids.push(record);
            }            
        })
        .on('finish',()=>{
            resolve();
        });
    });
    return ids; …
Run Code Online (Sandbox Code Playgroud)

javascript node.js node-csv-parse

4
推荐指数
1
解决办法
1897
查看次数

csv-parse 抛出无效的开头引号:在行的字段内找到引号

我知道还有其他帖子,但似乎没有一个可以解决我的问题。我正在使用 csv-parse 和 Node js。这是我尝试解析的 CSV 标头和记录。

sku,description,productUnitOfMeasure,unitCost,retailPrice,wholesalePrice,dropShipPrice,assemblyCost,planner,comments,productId,fileUpdate,SkuStatus,Master Planning Family,Category,Sub-Category,Brand,ShortCode,Import/Domestic,Inventory Value,Master Pack Quantity,Pallet / TI / HI,40HC Quantity,Product Group ID
032406021945-GreenBay,TFAL B2080264 INIT TNS GRY SAUTE PN 8",EA,7.72,13.99,0.00,0.00,0,Whitney Ehlke-2307,,032406021945,2022-01-25,New,COOKWARE,OPENSTOCK,NONE,T-FAL,B2080264,Domestic,208.44,3,0/0/0,0,23
Run Code Online (Sandbox Code Playgroud)

我无法控制该文件。我只需要能够解析它。您将看到描述末尾有一个双引号:TFal B2080264 INI TNS GRY SAUTE PN 8"

我需要将双引号保留在那里并将其解析为一个字段。我不断收到此错误:

开盘报价无效:在第 2 行的字段内发现报价。

引用不是一个开场白。从技术上讲,这是一个结束。但无论如何,它都不会解析。

这是目前我的代码:

const parser = fs.createReadStream(filePath).pipe(
    parse({ columns: true, relax_quotes: true, escape: '\\', ltrim: true, rtrim: true })
)
Run Code Online (Sandbox Code Playgroud)

我删除了一些参数并尝试了其他参数,但无济于事。有任何想法吗??

javascript node-csv-parse

3
推荐指数
1
解决办法
1万
查看次数

npm csv-parse 不读取所有行

我正在尝试使用csv-parse读取 CSV ,但最后一行未被读取。我的代码:

const handleFiles = event => {
  const f = event.target.files[0];
  const parser = CsvParse({delimiter: ',', columns: true});
  parser.on('readable', function(){
    console.log('readable');
    let record;
    // eslint-disable-next-line no-cond-assign
    while (record = parser.read()) {
      console.log(record);
    }
  });
  const reader = new FileReader();
  reader.onload = (function() {
    return function(e) {
      console.log('Writing');
      parser.write(e.target.result);
    };
  })(f);

  reader.readAsText(f);
};
Run Code Online (Sandbox Code Playgroud)

输入:

Letter,Number
A,1
B,2
C,3
Run Code Online (Sandbox Code Playgroud)

输出:

Writing
readable
{Letter: "A", Number: "1"}
readable
{Letter: "B", Number: "2"}
Run Code Online (Sandbox Code Playgroud)

为什么C3不被读取?
为什么“可读”被打印两次?我有一种感觉,我没有正确理解 csv-parse。

谢谢

javascript csv filereader node-csv-parse

2
推荐指数
1
解决办法
1013
查看次数

标签 统计

javascript ×4

node-csv-parse ×4

csv ×2

node.js ×2

filereader ×1