fs/promises api in typescript not compiling in javascript correctly
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.
Admin
Updated on August 28, 2021Comments
-
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 sayinginternal/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...