【问题标题】:Object doesn't support property or method 'readFile' (node: fs)对象不支持属性或方法“readFile”(节点:fs)
【发布时间】:2020-02-06 04:19:02
【问题描述】:

TypeError: 对象不支持属性或方法'readFile'

我刚刚创建了一个全新的 React 应用程序,但这正在发生...... 我不知道我还能做什么。

import * as React from "react";
import * as fs from "fs";
import * as zlib from 'zlib';


    constructor(props: IReactComponentProps, state: IReactComponentState) {
        super(props, state);
        this.jsonPath = "/myfolder/mygzipedjsonfile.json.gz";

        this.state = {
            loading: true,
            error: false,
        };

        this.test();
    }

    private test() {

        fs.readFile(this.jsonPath, function (err, buffer) {
            console.log('success');
        });
    }

错误:TypeError:对象不支持属性或方法“readFile”

ReactComponent.prototype.test
C:/Source/new-teste/src/ReactComponent.tsx:44
  41 | 
  42 |    private test() {
  43 | 
> 44 |        fs.readFile(this.jsonPath, function (err, buffer) {
     |        ^

【问题讨论】:

  • 您应该使用<input type="file"> 元素并让用户选择文件。浏览器中的 Javascript 不能在未经用户许可的情况下选择文件。

标签: reactjs typescript fs


【解决方案1】:

您不能在客户端使用fs。它不能在浏览器中工作,以保护您的文件系统免受潜在的安全威胁,fs 是一个低级 (OS) Node.js 特定包。根据经验,我在服务器端进行所有文件处理,所以我使用zlib,但同样,它是特定于 node.js 的。我可以建议pako 这是客户端javascript 的zlib 端口,并使用ungzip()inflate() 函数解压缩您的json 文件。解压后,您可以简单地将生成的文件导入到您的代码中,如下所示:

import jsonFile from 'resultingFile.json'

【讨论】:

  • 这是有道理的,但是我在互联网上找到的每个样本都是这样做的……我将把 'fs' 更改为 'fetch',我认为这才是我真正需要的。我只需要从我的公共文件夹中获取一个 file.json.gzip 并阅读它。有什么建议吗?感谢您的回答!
  • 不用担心,根据经验,我在服务器端处理所有文件,所以我使用zlib,但同样,它是特定于 node.js 的。我可以建议pako 这是客户端javascript 的zlib 端口,并使用ungzip() 函数解压缩您的json 文件。解压缩后,您可以简单地将生成的文件导入到您的代码中,如下所示:import jsonFile from 'resultingFile.json'
  • 看来我为ungzip() 函数链接了错误的文档。 Here is the right one 或者你也可以使用inflate()
  • 嗨@JKleinne,我正在使用pako,就像你建议的那样膨胀(解压缩)文件,http.get 从服务器公用文件夹中获取文件。现在一切正常。谢谢你的帮助,你很友善。
  • 嘿@GabrielMarcondes,不用担心,很高兴一切顺利!
猜你喜欢
  • 1970-01-01
  • 2019-07-05
  • 2015-04-14
  • 2020-09-03
  • 2015-04-09
  • 2014-01-12
  • 2016-08-20
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多