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

Jad*_*eye 12 javascript csv node.js node-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)

搜索SO给出了类似的结果,但没有实际的解决方案。

Jad*_*eye 31

解决方案很简单。如果parse或任何其他函数无法被 识别node require,请尝试将函数本身获取为:

const { parse } = require('csv-parse');
Run Code Online (Sandbox Code Playgroud)

值得注意的是,配色方案强调了const parsecolor = Whiteparse之间的差异,以及内部函数pipe= green的用法。

错误的呼叫

并且绿色const { parse }的颜色没有错误,与调用相匹配。const

在此输入图像描述