安装后我无法运行grunt-cli
。我跑
npm install -g grunt-cli
然后用
运行grunt错误 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
这就是我安装的内容:
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
答案 0 :(得分:11)
我必须安装并链接findup-sync和其他一些npm软件包才能解决这些依赖性问题。我虽然npm应该为我们处理它们,但是手动安装依赖项会使问题消失。
npm install findup-sync -g
npm link findup-sync
答案 1 :(得分:9)
我让我再次在全球和我的回购中重新安装grunt-cli。
npm install -g grunt-cli
cd myrepo
npm install grunt-cli
我认为Yosemite安装在我的文件中破坏了一些东西......
答案 2 :(得分:3)
这是因为npm没有为/ usr / lib / node_modules / grunt-cli中的子目录node_modules设置正确的权限。 就我而言,我有:
drwxr-x--- 6 nobody root 4096 16 févr. 17:08 node_modules
当以非root用户身份运行grunt时,由于拒绝读取此目录的权限,我遇到了同样的错误(找不到模块'findup-sync')。
解决方案是使用chmod修复权限:chmod a + rx node_modules。
但事实上,涉及所有目录。最好的方法是todo:
find /usr/lib/node_modules/grunt-cli -type d -exec chmod a+rx {} \;
这可能是一个分发错误(我使用Archlinux)。
答案 3 :(得分:2)
这看似简单,但如果其他人不确定是否存在权限问题,请尝试运行sudo grunt
,然后从那里开始。
答案 4 :(得分:1)
这也可能很明显,但是就我而言,我已经在主目录(在chromebook上)上设置了npm路径,并且需要向.profile中添加.node_modules
PATH=~./node_modules:$PATH
然后运行:
source ~/.profile
答案 5 :(得分:1)
我使用NVM并在更改活动节点版本时遇到此问题。
遵循@davidcondrey的建议对我有用。真正的问题是在grunt之前先安装grunt-cli 。顺序有所不同并加以解决。
CIFilter
@inostia使用 sudo 来测试权限的答案是可以的,但是让我非常头痛的是文件权限,因为git以后无法使用所有经过grunt处理的文件,这破坏了我的权限版本。
答案 6 :(得分:0)
我能够通过使用以下命令重新安装Grunt来解决此问题:
sudo npm remove -g grunt-cli
sudo npm install -g grunt-cli
答案 7 :(得分:0)
如果您更改NodeJS
版本,则会发生此问题。
更改节点版本后,重新安装grunt
或npm install
将解决此问题。
答案 8 :(得分:0)
尝试了以上所有答案,如果不使用sudo,我将无法工作
最后遇到this Wordpress article,并删除了指向/usr/local/lib/node_modules/grunt/bin/grunt
的链接
lrwxrwxrwx 1 root root 35 Apr 19 22:45 /usr/local/bin/grunt -> ../lib/node_modules/grunt/bin/grunt
使用sudo rm /usr/local/bin/grunt
然后我链接到/ usr / local / lib / node_modules / grunt-cli / bin中的grunt可执行文件
使用sudo ln -s /usr/local/lib/node_modules/grunt-cli/bin/grunt /usr/local/bin/grunt
现在,我无需使用sudo即可运行grunt