fs/promises api in typescript not compiling in javascript correctly

33,845

Solution 1

The error was due to unsupported Node version 12.x which doesn't support this require statement...

var promises_1 = require("fs/promises");

but this works

var promises_1 = require("fs").promises;

This can be solved by updating the Node to the latest.

Solution 2

The solution I like best:

import { promises as fs } from 'fs';

async function main() {
  await fs.writeFile('test.txt', 'hello');
}

Solution 3

What worked for me in node v12.18.1 was:

import { promises } from "fs";
const { readFile, writeFile } = promises;

I could use both methods within nestJS/express context.

Solution 4

In the used version of Node.js, there's no dedicated module fs/promises yet, according to the documentation. It should be possible, however, to upgrade Node.js to the latest 12.x, so that the module will be accessible.

Share:
33,845
Admin
Author by

Admin

Updated on August 28, 2021

Comments

  • Admin
    Admin over 2 years

    I was recently working with typescript and fs/promises API and got this error when the typescript code was compiled and run, I got this error saying
    internal/modules/cjs/loader.js:968
      throw err;
      ^
    
    Error: Cannot find module 'fs/promises'
    

    when I looked at the compiled code this is what I found...

    var promises_1 = require("fs/promises");
    

    which started working by changing it to

    var promises_1 = require("fs").promises;
    

    This is my typescript file import

    import { readFile, writeFile, appendFile } from "fs/promises";
    

    my package.json file

     "devDependencies": {
        "@types/cheerio": "^0.22.22",
        "@types/got": "^9.6.11",
        "@types/node": "^14.14.6"
      },
      "dependencies": {
        "cheerio": "^1.0.0-rc.3",
        "got": "^11.8.0"
      }
    

    and my tsconfig.json file

    {
      "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "strict": true,
        "outDir": "dist",
        "sourceMap": true
      },
      "include": ["src/**/*"],
      "exclude": ["node_modules", "**/*.spec.ts"]
    }
    

    node version 12.18.0

    Is there someone facing the same problem or am I doing something wrong?
    please help
    Thanks...