Error: Cannot find module 'nan'

34,194

Solution 1

In my case, it was because of some dependencies missing in the package-lock file. I solved it by removing it and running $ npm install again.

Solution 2

Install nan globally:

npm i -g nan

And then,

export NODE_PATH=$(npm root -g)

Solution 3

Not ideal but it works if you install nan first.

$ npm install nan

Solution 4

I had this exact error with node.js version v12.18.3 and npm 6.14.6.

Upgrading to node.js version v14.15.4 (which includes npm 6.14.10) resolved the issue. npm install ran successfully after the upgrade.

There was no need to install nan in any way.

Share:
34,194
Rax Wunter
Author by

Rax Wunter

Updated on July 16, 2022

Comments

  • Rax Wunter
    Rax Wunter almost 2 years

    I'm working on native Node.js addon and following nan docs

    I included nan into binding.gyp like: "include_dirs" : [ "<!(node -e \"require('nan')\")" ]

    Also nan is in npm dependencies.

    But when I install the package inside the another node module node-gyp is failed with error

    > [email protected] install /Users/Shopgate/sandbox/stress/node_modules/nnb
    > node-gyp rebuild
    
    module.js:338
        throw err;
              ^
    Error: Cannot find module 'nan'
        at Function.Module._resolveFilename (module.js:336:15)
        at Function.Module._load (module.js:278:25)
        at Module.require (module.js:365:17)
        at require (module.js:384:17)
        at [eval]:1:1
        at Object.exports.runInThisContext (vm.js:74:17)
        at Object.<anonymous> ([eval]-wrapper:6:22)
        at Module._compile (module.js:460:26)
        at evalScript (node.js:431:25)
        at startup (node.js:90:7)
    gyp: Call to 'node -e "require('nan')"' returned exit status 1. while trying to load binding.gyp