typescript 未捕获的类型错误:fs_1.default.readFileSync不是函数

v2g6jxz6  于 2023-04-22  发布在  TypeScript
关注(0)|答案(2)|浏览(178)

我正在一个项目中使用Parcel bundler,但我最大的障碍之一是我正在使用Node标准库中的fs模块,结果我得到了这个错误:
fs_1.default.readFileSync is not a function
上面的错误是基于这样的逻辑:

import fs from 'fs';

class Data {
  Address: string;
  General_Plan_Designation: string;
  Latitude: number;
  Longitude: number;

  static DELIMITER = ",";

  constructor(rawRow) {
    const data = rawRow.split(Data.DELIMITER);

    this.Address = data[0];
    this.General_Plan_Designation = data[1];
    this.Latitude = parseFloat(data[2]);
    this.Longitude = parseFloat(data[3]);
  }
}

const ROW_DELIMITER = "\r\n";

const rawData = fs.readFileSync("Cales_trim_down.csv", {
  encoding: "utf-8",
});

const data: Data[] = [];

for (const rawRow of rawData.split(ROW_DELIMITER)) {
  data.push(new Data(rawRow));
}

console.log(data);

我被告知做import * as whateverFS from 'fs';,但这并没有解决问题。我被告知进入tsconfig.json文件,并确保esModule的东西或其他设置为true,但Parcel没有一个,没有一个我可以重新配置至少。
如何让Node标准库模块与Parcel一起使用?

rsaldnfx

rsaldnfx1#

因此,当将TypeScript与Node标准库模块一起使用并使用Parcel运行本地服务器时,您不能像我所做的那样全局安装Parcel并像parcel index.html一样运行它。
在这种情况下,您需要创建一个package.json文件:

{
  "scripts": {
    "build": "parcel build ./src/index.ts --target node",
    "start": "parcel index.html"
  },
  "devDependencies": {
    "typescript": "^4.2.4"
  },
  "dependencies": {
    "@types/googlemaps": "^3.43.3",
    "@types/node": "^15.0.2",
    "fs": "0.0.1-security",
    "parcel-bundler": "^1.12.5",
    "path": "^0.12.7"
  }
}

这是解决方案的第一部分,第B部分是不使用fs.readFileSync(),而只需要像这样导入readFileSync()

import { readFileSync } from "fs";

然后像这样应用它:

export const rawData = readFileSync("src/Cales_trim_down.csv", {
  encoding: "utf-8",
});
zvokhttg

zvokhttg2#

在Parcel 2中,将文件读取为文字、纯文本的推荐方法是使用bundle-text:方案。
示例:

import text from 'bundle-text:./myFile';
console.log(text);

相关问题