fs.writeFile in a promise, asynchronous-synchronous stuff

前端 未结 10 1512
清歌不尽
清歌不尽 2020-11-30 22:49

I need some help with my code. I\'m new at Node.js and have a lot of trouble with it.

What I\'m trying to do:

1) Fetch a .txt with Amazon products (ASINs) ;<

10条回答
  •  失恋的感觉
    2020-11-30 23:31

    As of 2019...

    ...the correct answer is to use async/await with the native fs promises module included in node. Upgrade to Node.js 10 or 11 (already supported by major cloud providers) and do this:

    const fs = require('fs').promises;
    
    // This must run inside a function marked `async`:
    const file = await fs.readFile('filename.txt', 'utf8');
    await fs.writeFile('filename.txt', 'test');
    

    Do not use third-party packages and do not write your own wrappers, that's not necessary anymore.

    No longer experimental

    Before Node 11.14.0, you would still get a warning that this feature is experimental, but it works just fine and it's the way to go in the future. Since 11.14.0, the feature is no longer experimental and is production-ready.

    What if I prefer import instead of require?

    It works, too - but only in Node.js versions where this feature is not marked as experimental.

    import { promises as fs } from 'fs';
    
    (async () => {
        await fs.writeFile('./test.txt', 'test', 'utf8');
    })();
    

提交回复
热议问题