afex-connect / winston-react

React implementation for WinstonJS
MIT License
6 stars 2 forks source link

Module not found: Can't resolve 'fs' #193

Open ziedHamdi opened 3 years ago

ziedHamdi commented 3 years ago

Hi,

I just discovered winston-react. I made this config on next.js

I'm receiving the following error:

error - ./node_modules/winston/dist/winston/tail-file.js:9:0
Module not found: Can't resolve 'fs'

I don't see the point of installing fs on the client side

/lib/logger.js

const winston = require('winston');

export default winston.createLogger({
    level: 'info',
    format: winston.format.json(),
    defaultMeta: { service: 'user-service' },
    transports: [
        new winston.transports.Console({
            format: winston.format.simple(),
        })
    ],
});

/pages/_app.js

import React from 'react';
import {ApolloProvider} from '@apollo/client'
import {useApollo} from '../apollo/client'
import {ThemeProvider} from '@material-ui/core/styles';
import CssBaseline from '@material-ui/core/CssBaseline';
import Head from 'next/head';
import theme from '../components/theme';
import PropTypes from 'prop-types';
import {appWithTranslation} from 'next-i18next';
import {Provider} from 'next-auth/client'
import logger from '../lib/logger'
import {WinstonProvider} from 'winston-react';

/**
 * Inspired from https://github.com/mui-org/material-ui/tree/master/examples/nextjs to add SSR to material-ui
 * @param Component
 * @param pageProps
 * @returns {JSX.Element}
 * @constructor
 */

function App({Component, pageProps}) {
    const apolloClient = useApollo(pageProps.initialApolloState)

    React.useEffect(() => {
        // Remove the server-side injected CSS.
        const jssStyles = document.querySelector('#jss-server-side');
        if (jssStyles) {
            jssStyles.parentElement.removeChild(jssStyles);
        }
    }, []);

    return (
        <ApolloProvider client={apolloClient}>
            <WinstonProvider logger={logger}>
                <Provider session={pageProps.session}>
                    <Head>
                        <title>WeAlly</title>
                        <meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width"/>
                    </Head>
                    <ThemeProvider theme={theme}>
                        {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
                        <CssBaseline/>
                        <Component {...pageProps} />
                    </ThemeProvider>
                </Provider>
            </WinstonProvider>
        </ApolloProvider>
    )
}

export default appWithTranslation(App);

App.propTypes = {
    Component: PropTypes.elementType.isRequired,
    pageProps: PropTypes.object.isRequired,
};

then in my code

function renderItem(props, tile, selectedIssueId) {
    const {t, classes, view} = props;
    const logger = useWinstonLogger()

package.json

{
  "name": "api-routes-apollo-server-and-client-auth",
  "version": "1.0.0",
  "scripts": {
    "dev": "next",
    "back": "node ./server/starter.js",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "@apollo/client": "^3.0.2",
    "@fontsource/roboto": "^4.4.5",
    "@google/maps": "^1.1.3",
    "@hapi/iron": "6.0.0",
    "@material-ui/core": "^4.11.4",
    "@material-ui/icons": "^4.11.2",
    "apollo-server-micro": "^2.14.2",
    "body-parser": "^1.19.0",
    "classnames": "^2.3.1",
    "cookie": "^0.4.1",
    "cors": "^2.8.5",
    "deepmerge": "4.2.2",
    "ejs": "^3.1.6",
    "express-graphql": "^0.12.0",
    "express-jwt": "^6.0.0",
    "express-session": "^1.17.2",
    "fb": "^2.0.0",
    "fs": "^0.0.1-security",
    "graphql": "^14.0.2",
    "image-type": "^4.1.0",
    "moment": "^2.29.1",
    "mongodb": "^3.6.9",
    "next": "latest",
    "next-auth": "^3.27.0",
    "next-i18next": "^8.5.0",
    "passport": "^0.4.1",
    "passport-facebook": "^3.0.0",
    "prop-types": "^15.6.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-moment": "^1.1.1",
    "sanitize-html": "^2.4.0",
    "winston-react": "^1.0.0-RC.0"
  },
  "license": "MIT"
}
MadalenaPavao commented 2 years ago

Hello @ziedHamdi

I have a similar problem! Did you find a solution?