【问题标题】:TypeError: fs.readdirSync is not a function when using Winston logger in ReactTypeError: fs.readdirSync 在 React 中使用 Winston 记录器时不是一个函数
【发布时间】:2022-01-12 09:27:57
【问题描述】:

我正在用 React 开发一个应用程序(使用 JavaScript),我想使用 Winston-react 包创建一个日志文件。 我从这里开始学习他们的教程:https://github.com/afex-connect/winston-react#readme(显然适应了 javascript)

安装

npm install winston-react

用法 App.js:

import React from 'react';
import winston from 'winston';
import { WinstonProvider } from 'winston-react';

const logger = winston.createLogger({
  // ...
  transports: [
    // ...
    new winston.transports.Console()
  ]
});

const App = () => (
  <WinstonProvider logger={logger}>
    <div>
      your awesome application
    </div>
  </WinstonProvider>
);

使用钩子:

import React from 'react';
import { useWinstonLogger } from 'winston-logger';

const Component = () => {
  const logger = useWinstonLogger();

  React.useEffect(() => {
    logger.info('your awesome information log!');
  });

  return (
    <div>
      your awesome component
    </div>
  );
};

但它抛出了这个错误: TypeError: fs.readdirSync is not a function

node_modules/pkginfo/lib/pkginfo.js:95
  92 |   dir = path.dirname(pmodule.filename);
  93 | }
  94 | 
> 95 | var files = fs.readdirSync(dir);
     | ^  96 | 
  97 | if (~files.indexOf('package.json')) {
  98 |   return path.join(dir, 'package.json');

【问题讨论】:

  • 你能在codesandbox上创建一个例子吗?

标签: javascript reactjs logging fs winston


【解决方案1】:

您是在节点中还是在浏览器中运行您的应用程序?浏览器中不存在fs 模块。

另外,如果你想创建一个日志文件,那么你需要使用File 传输。您的代码示例仅显示Console 传输,它将写入控制台。

【讨论】:

    猜你喜欢
    • 2020-12-23
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2021-07-11
    • 2019-04-01
    • 2018-04-05
    • 2013-01-28
    • 2020-04-17
    相关资源
    最近更新 更多