Ionic Appflow - Cannot find module 'nan'

Recently when I have built apps using Appflow I started getting a message in the build logs stating that it cannot find module ‘nan’.

This has not affected my builds, but it hasn’t normally happened in previous uses.

Does anyone know what this means or how to fix it?

+---------------------+-----------------------+
|                Build Summary                |
+---------------------+-----------------------+
| Job ID              | 7098282               |
| Node.js version     | v14.15.0              |
| Cordova CLI version | 10.0.0                |
| npm version         | 6.14.8                |
| macOS version       | 10.15.7               |
| Xcode version       | Xcode 12.1            |
|                     | Build version 12A7403 |
+---------------------+-----------------------+

[20:20:38]: Installing Dependencies
[20:20:38]: $ npm install --quiet --no-optional
[20:22:08]: ▸ > fsevents@1.2.13 install /Users/ionic/builds/project-0/node_modules/watchpack-chokidar2/node_modules/fsevents
[20:22:08]: ▸ > node install.js
[20:22:12]: ▸ internal/modules/cjs/loader.js:883
[20:22:12]: ▸ throw err;
[20:22:12]: ▸ ^
[20:22:12]: ▸ Error: Cannot find module 'nan'
[20:22:12]: ▸ Require stack:
[20:22:12]: ▸ - /Users/ionic/builds/project-0/node_modules/watchpack-chokidar2/node_modules/fsevents/[eval]
[20:22:12]: ▸ at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
[20:22:12]: ▸ at Function.Module._load (internal/modules/cjs/loader.js:725:27)
[20:22:12]: ▸ at Module.require (internal/modules/cjs/loader.js:952:19)
[20:22:12]: ▸ at require (internal/modules/cjs/helpers.js:88:18)
[20:22:12]: ▸ at [eval]:1:1
[20:22:12]: ▸ at Script.runInThisContext (vm.js:132:18)
[20:22:12]: ▸ at Object.runInThisContext (vm.js:309:38)
[20:22:12]: ▸ at internal/process/execution.js:77:19
[20:22:12]: ▸ at [eval]-wrapper:6:22
[20:22:12]: ▸ at evalScript (internal/process/execution.js:76:60) {
[20:22:12]: ▸ code: 'MODULE_NOT_FOUND',
[20:22:12]: ▸ requireStack: [
[20:22:12]: ▸ '/Users/ionic/builds/project-0/node_modules/watchpack-chokidar2/node_modules/fsevents/[eval]'
[20:22:12]: ▸ ]
[20:22:12]: ▸ }
[20:22:12]: ▸ gyp: Call to 'node -e "require('nan')"' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
[20:22:12]: ▸ gyp ERR! configure error
[20:22:12]: ▸ gyp ERR! stack Error: `gyp` failed with exit code: 1
[20:22:12]: ▸ gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/Cellar/node@14/14.15.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
[20:22:12]: ▸ gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
[20:22:12]: ▸ gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
[20:22:12]: ▸ gyp ERR! System Darwin 19.6.0
[20:22:12]: ▸ gyp ERR! command "/usr/local/Cellar/node@14/14.15.0/bin/node" "/usr/local/Cellar/node@14/14.15.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
[20:22:12]: ▸ gyp ERR! cwd /Users/ionic/builds/project-0/node_modules/watchpack-chokidar2/node_modules/fsevents
[20:22:12]: ▸ gyp ERR! node -v v14.15.0
[20:22:12]: ▸ gyp ERR! node-gyp -v v5.1.0
[20:22:12]: ▸ gyp ERR! not ok
[20:22:12]: ▸ > fsevents@1.2.13 install /Users/ionic/builds/project-0/node_modules/webpack-dev-server/node_modules/fsevents
[20:22:12]: ▸ > node install.js
[20:22:13]: ▸ internal/modules/cjs/loader.js:883
[20:22:13]: ▸ throw err;
[20:22:13]: ▸ ^
[20:22:13]: ▸ Error: Cannot find module 'nan'
[20:22:13]: ▸ Require stack:
[20:22:13]: ▸ - /Users/ionic/builds/project-0/node_modules/webpack-dev-server/node_modules/fsevents/[eval]
[20:22:13]: ▸ at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
[20:22:13]: ▸ at Function.Module._load (internal/modules/cjs/loader.js:725:27)
[20:22:13]: ▸ at Module.require (internal/modules/cjs/loader.js:952:19)
[20:22:13]: ▸ at require (internal/modules/cjs/helpers.js:88:18)
[20:22:13]: ▸ at [eval]:1:1
[20:22:13]: ▸ at Script.runInThisContext (vm.js:132:18)
[20:22:13]: ▸ at Object.runInThisContext (vm.js:309:38)
[20:22:13]: ▸ at internal/process/execution.js:77:19
[20:22:13]: ▸ at [eval]-wrapper:6:22
[20:22:13]: ▸ at evalScript (internal/process/execution.js:76:60) {
[20:22:13]: ▸ code: 'MODULE_NOT_FOUND',
[20:22:13]: ▸ requireStack: [
[20:22:13]: ▸ '/Users/ionic/builds/project-0/node_modules/webpack-dev-server/node_modules/fsevents/[eval]'
[20:22:13]: ▸ ]
[20:22:13]: ▸ }
[20:22:13]: ▸ gyp: Call to 'node -e "require('nan')"' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
[20:22:13]: ▸ gyp ERR! configure error
[20:22:13]: ▸ gyp ERR! stack Error: `gyp` failed with exit code: 1
[20:22:13]: ▸ gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/Cellar/node@14/14.15.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
[20:22:13]: ▸ gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
[20:22:13]: ▸ gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
[20:22:13]: ▸ gyp ERR! System Darwin 19.6.0
[20:22:13]: ▸ gyp ERR! command "/usr/local/Cellar/node@14/14.15.0/bin/node" "/usr/local/Cellar/node@14/14.15.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
[20:22:13]: ▸ gyp ERR! cwd /Users/ionic/builds/project-0/node_modules/webpack-dev-server/node_modules/fsevents
[20:22:13]: ▸ gyp ERR! node -v v14.15.0
[20:22:13]: ▸ gyp ERR! node-gyp -v v5.1.0
[20:22:13]: ▸ gyp ERR! not ok
[20:22:13]: ▸ > core-js@3.6.4 postinstall /Users/ionic/builds/project-0/node_modules/core-js
[20:22:13]: ▸ > node -e "try{require('./postinstall')}catch(e){}"
[20:22:14]: ▸ > @angular/cli@9.1.7 postinstall /Users/ionic/builds/project-0/node_modules/@angular/cli
[20:22:14]: ▸ > node ./bin/postinstall/script.js
[20:22:17]: ▸ added 1691 packages from 1302 contributors and audited 1693 packages in 97.45s
[20:22:19]: ▸ 64 packages are looking for funding
[20:22:19]: ▸ run `npm fund` for details
[20:22:19]: ▸ found 1 low severity vulnerability
[20:22:19]: ▸ run `npm audit fix` to fix them, or `npm audit` for details

This error isn’t uncommon and is usually benign. If your project was prepared with older deps and a version of node earlier than v14 you may have better luck with an earlier Appflow build stack.

If you’re unable to resolve the problem you can open a ticket by emailing support@ionic.io. If you do be sure to use the email address your account is registered under and include your Appflow App ID.