Call async/await functions in parallel

You can await on Promise.all(): await Promise.all([someCall(), anotherCall()]); To store the results: let [someResult, anotherResult] = await Promise.all([someCall(), anotherCall()]); Note that Promise.all fails fast, which means that as soon as one of the promises supplied to it rejects, then the entire thing rejects. const happy = (v, ms) => new Promise((resolve) => setTimeout(() => resolve(v), … Read more

How do you prevent install of “devDependencies” NPM modules for Node.js (package.json)?

The npm install command will install the devDependencies along other dependencies when run inside a package directory, in a development environment (the default). In version 8.x and above use –omit=dev flag to install only regular dependencies: npm install –omit=dev This will install only dependencies, and not devDependencies, regardless of the value of the NODE_ENV environment … Read more

Execute a command line binary with Node.js

For even newer version of Node.js (v8.1.4), the events and calls are similar or identical to older versions, but it’s encouraged to use the standard newer language features. Examples: For buffered, non-stream formatted output (you get it all at once), use child_process.exec: const { exec } = require(‘child_process’); exec(‘cat *.js bad_file | wc -l’, (err, … Read more

How to fix “ReferenceError: primordials is not defined” in Node.js

I hit the same error. I suspect you’re using Node.js 12 and Gulp.js 3. That combination does not work: Gulp.js 3 is broken on Node.js 12 #2324 A previous workaround from Jan. does not work either: After update to Node.js 11.0.0 running Gulp.js exits with ‘ReferenceError: internalBinding is not defined’ #2246 Solution: Either upgrade to … Read more

Node.js Best Practice Exception Handling

Update: Joyent now has their own guide. The following information is more of a summary: Safely “throwing” errors Ideally we’d like to avoid uncaught errors as much as possible, as such, instead of literally throwing the error, we can instead safely “throw” the error using one of the following methods depending on our code architecture: … Read more

Babel 6 regeneratorRuntime is not defined

babel-polyfill (deprecated as of Babel 7.4) is required. You must also install it in order to get async/await working. npm i -D babel-core babel-polyfill babel-preset-es2015 babel-preset-stage-0 babel-loader package.json “devDependencies”: { “babel-core”: “^6.0.20”, “babel-polyfill”: “^6.0.16”, “babel-preset-es2015”: “^6.0.15”, “babel-preset-stage-0”: “^6.0.15” } .babelrc { “presets”: [ “es2015”, “stage-0” ] } .js with async/await (sample code) “use strict”; export … Read more