How to resolve fs.existsSync is not a function

Viewed 60820

In NodeJS I have:

const fs = require('fs');
if (!fs.existsSync("some_path")) {
...
}

But I get the error:

TypeError: fs.existsSync is not a function

After doing some searching, I read that Webpack brings its own require which clobbers node.js's require, so when you require a node.js core module that webpack can't resolve to one of your files or dependencies, it throws.

(My stack trace includes __webpack_require__)

But how can I fix it?

7 Answers

I was facing the same Error like TypeError: fs.existsSync is not a function

enter image description here

So, I figured out that one extra line was added automatically which was creating this issue in import.

enter image description here

after removing this line from import

import { TRUE } from "node-sass";

the issue has been resolved.

I had the same error that you have. Your vscode might have added a new module to your js file. Remove that module and your app should work just fine.

I was working on an electron application, I wanted to send a message from node and get in on the react side, but I was having that same issue when requiring ipcRenderer from electron, I tried import { ipcRenderer } from 'electron'; and const { ipceRenderer } = require('electron') This leads to an error due to webpack transforming node's require to its own webpack_require. See more info here

What worked for me was to use

const {ipcRenderer} = window.require('electron'); on the react side/renderer side from electron

In my case, I forgot that I'd only imported the promises API, const fs = require("fs").promises, which doesn't have exist or existsSync functions in Node 17.4.0.

To use exist or existsSync, make sure you've imported fs using the sync API (const fs = require("fs")).

Note: I'm adding this answer as a possible solution for future visitors to a canonical thread for the error, not OP who appears to have required fs correctly.

It is nothing to worry about, check your code for something like import { types } from "node-sass";, it would have mistakenly and automatically imported without you know. Remove that line, and everything should work perfectly.

Even if it is not type, it is something from node-sass in your node_modules file, and you can't edit that file. So look for and remove import { types } from "node-sass"

In my case VSCode added a arbitrary import from electron. After removing it my application worked.

import { Menu } from 'electron';
Related