0

我试图执行一个读取 CSV 文件的示例脚本。然后将数据变成SHA1哈希。我从这个 git 复制了样本:

https://gist.github.com/cdurth/6735c82cd11c5a057bd4

我收到此错误:

C:\Users\test\Desktop\convert\csvParseToSha1.js:14
 .fromPath(inputFile)
  ^

TypeError: csv.fromPath is not a function
    at Object.<anonymous> (C:\Users\Nope\Desktop\convert\csvParseToSha1.js:14:3)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47

示例代码:

var fs = require('fs');
var csv = require("fast-csv");
var sha1 = require('sha1');

var inputFile = 'emailList.csv';
var outputFile = 'sha1List.csv';

var csvStream = csv.format({headers: false}),
    writableStream = fs.createWriteStream(outputFile);

csvStream.pipe(writableStream);

csv
 .fromPath(inputFile)
 .on("data", function(data){
   var hashed = sha1(data[0])
   csvStream.write([hashed]);
 })
 .on("end", function(){
     csvStream.end();
     console.log("done");
 });

fast-csv 版本是 4.1.3

4

2 回答 2

1

对于 'fast-csv' 版本 >= 3.0.0 :- fromPath 已弃用

https://github.com/C2FO/fast-csv/blob/master/History.md#v300

于 2020-04-21T12:31:16.100 回答
0

所以我已将 csv.fromPath() 更改为 csv.parseFile()

var fs = require('fs');
var csv = require("fast-csv");
var sha1 = require('sha1');

var inputFile = 'emailList.csv';
var outputFile = 'sha1List.csv';

var csvStream = csv.format({headers: false}),
    writableStream = fs.createWriteStream(outputFile);

csvStream.pipe(writableStream);

csv
 .parseFile()(inputFile)
 .on("data", function(data){
   var hashed = sha1(data[0])
   csvStream.write([hashed]);
 })
 .on("end", function(){
     csvStream.end();
     console.log("done");
 });

现在我明白了:

internal/fs/utils.js:535
    throw new ERR_INVALID_ARG_TYPE(propName, ['string', 'Buffer', 'URL'], path);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received undefined
    at Object.open (fs.js:424:10)
    at ReadStream.open (internal/fs/streams.js:127:6)
    at new ReadStream (internal/fs/streams.js:115:10)
    at Object.createReadStream (fs.js:1820:10)
    at Object.exports.parseFile (C:\Users\Nope\node_modules\@fast-csv\parse\build\src\index.js:24:52)
    at Object.<anonymous> (C:\Users\Nope\Desktop\convert\csvParseToSha1.js:14:3)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14) {
  code: 'ERR_INVALID_ARG_TYPE'
}

于 2020-04-21T12:46:30.663 回答