I am having trouble running grunt-cli after installing it. I run
npm install -g grunt-cli
then running grunt errors with
node.js:63
throw e;
^
Error: Cannot find module 'findup-sync'
at loadModule (node.js:275:15)
at require (node.js:411:14)
at Object.<anonymous> (/home/tmartin/bin/grunt:9:14)
at Module._compile (node.js:462:23)
at Module._loadScriptSync (node.js:469:10)
at Module.loadSync (node.js:338:12)
at Object.runMain (node.js:522:24)
at Array.<anonymous> (node.js:756:12)
at EventEmitter._tickCallback (node.js:55:22)
at node.js:773:9
This is what I have installed:
tmartin@timcomp:~$ npm list -g
/home/tmartin/lib
└─┬ grunt-cli@0.1.6
├─┬ findup-sync@0.1.2
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.0
│ │ ├── inherits@1.0.0
│ │ └─┬ minimatch@0.2.11
│ │ ├── lru-cache@2.2.2
│ │ └── sigmund@1.0.0
│ └── lodash@1.0.1
└─┬ nopt@1.0.10
└── abbrev@1.0.4
I had to install and link findup-sync and a few other npm packages to get these dependency issues to go away. I though npm was supposed to handle them for us, but installing the dependencies manually made the issues go away.
npm install findup-sync -g
npm link findup-sync
I got mine running again reinstalling grunt-cli globally and in my repo.
npm install -g grunt-cli
cd myrepo
npm install grunt-cli
I think Yosemite installation broke some things in my files ...
This is because npm doesn't set the right permission to sub-directory node_modules in /usr/lib/node_modules/grunt-cli. In my case, I had:
drwxr-x--- 6 nobody root 4096 16 févr. 17:08 node_modules
When running grunt as non-root user, I had the same error (Cannot find module 'findup-sync') because of a permission denied to read this directory.
The solution is to fix permission with chmod: chmod a+rx node_modules.
But in fact, all directories was involved. The best way was to todo:
find /usr/lib/node_modules/grunt-cli -type d -exec chmod a+rx {} \;
This is maybe a distribution bug (I use Archlinux).
This may seem simple, but if anyone else is unsure if there's a permissions problem, try running sudo grunt then go from there.