I am developing an application in React (using JavaScript) and I want to create a log file using the package Winston-react. I have followed their tutorial from here: https://github.com/afex-connect/winston-react#readme (obviously adapted to javascript)
Install
npm install winston-react
Usage 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>
);
Using hooks:
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>
);
};
But it is throwing this error:
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');
Are you running your application in node or in a browser? The fs module does not exist in the browser.
Also, if you want to create a log file then you need to use the File transport. Your code sample only shows the Console transport, which will write to the console.