【问题标题】:TypeError: fs.existsSync is not a functionTypeError:fs.​​existsSync 不是函数
【发布时间】:2020-02-12 22:41:34
【问题描述】:

我正在尝试在 React.js 中使用 Winston

创建记录器时出现错误

TypeError: fs.existsSync 不是函数

这就是我创建它的方式:

this.logger = winston.createLogger({
        level: 'info',
        format: winston.format.json(),
        transports: [
          //
          // - Write to all logs with level `info` and below to `combined.log` 
          // - Write all logs error (and below) to `error.log`.
          //
          new winston.transports.Console(),
          new winston.transports.File({ filename: 'error.log', level: 'error' }),
          new winston.transports.File({ filename: 'combined.log' })
        ]
      });

我只看到有关如何在 Node.js 中处理它的问题。如何使用 React 解决这个问题?

【问题讨论】:

  • 可能是因为winston使用的fs在浏览器端不可用。这是一个节点 js 库。要在浏览器端使用winston,我会说尝试使用npmjs.com/package/winston-transport-browserconsole
  • @AtinSingh 我应该删除原来的 winston npm 包吗?
  • 不,你仍然需要温斯顿。

标签: reactjs webpack winston


【解决方案1】:

fs 是一个 nodejs 库,所以你不能在浏览器端使用它。请改用winston-transport-browserconsole。

https://www.npmjs.com/package/winston-transport-browserconsole

使用方便,支持记录json对象:

例子-

import * as winston from "winston";
import BrowserConsole from 'winston-transport-browserconsole';

const level = "debug";
winston.configure({
    transports: [
        new BrowserConsole(
            {
                format: winston.format.simple(),
                level,
            },
        ),
    ],
});

winston.debug("DEBUG ", {a: 1, b: "two"});

【讨论】:

  • 浏览器控制台传输到底是什么?是持久的吗?
【解决方案2】:

我遇到了和你一样的错误。你的 vscode 可能在你的 js 文件中添加了一个新模块。删除该模块,您的应用应该可以正常工作。

从 "node-sass" 导入 { TRUE };或从“node-sass”导入 { FALSE };

只需删除上面的代码

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 2020-11-16
    • 2020-04-26
    • 2020-03-01
    • 2021-08-26
    • 2022-06-30
    • 2021-01-10
    • 2016-10-03
    相关资源
    最近更新 更多