38

安装后运行有问题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
4

10 回答 10

13

我必须安装并链接 findup-sync 和其他一些 npm 包才能消除这些依赖问题。我虽然应该 npm 为我们处理它们,但是手动安装依赖项使问题消失了。

npm install findup-sync -g

npm link findup-sync

于 2014-01-14T06:06:52.783 回答
13

我让我的再次运行,在全球和我的仓库中重新安装 grunt-cli。

npm install -g grunt-cli

cd myrepo

npm install grunt-cli

我认为优胜美地的安装破坏了我文件中的一些东西......

于 2014-10-20T07:34:29.090 回答
6

这是因为 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。

但实际上,所有目录都涉及。最好的方法是:

find /usr/lib/node_modules/grunt-cli -type d -exec chmod a+rx {} \;

这可能是一个分发错误(我使用 Archlinux)。

于 2014-02-16T16:28:40.543 回答
3

这可能看起来很简单,但如果其他人不确定是否存在权限问题,请尝试运行sudo grunt然后从那里开始。

于 2015-06-23T21:59:38.443 回答
2

我使用 NVM 并且每当我更改活动节点版本时都会遇到这个问题。

遵循@davidcondrey 的建议对我有用。真正的问题是在 grunt之前安装 grunt-cli 。该命令产生了影响并修复了它。

npm i -g grunt-cli grunt

@inostia 使用sudo测试权限的答案是可以的,但是文件权限让我很头疼,因为所有 grunt 处理的文件后来都无法被 git 访问并破坏了我的版本控制。

于 2020-01-21T20:16:36.513 回答
1

我可以通过使用以下命令重新安装 Grunt 来解决此问题:

sudo npm remove -g grunt-cli
sudo npm install -g grunt-cli
于 2019-03-29T15:59:43.663 回答
1

这也可能很明显,但在我的情况下,我已经在我的主目录(在 chromebook 上)设置了我的 npm 路径,并且需要将 .node_modules 添加到我的 .profile
PATH=~./node_modules:$PATH
然后运行:
source ~/.profile

于 2019-02-16T23:53:08.713 回答
0

我通过运行解决了这个问题:

npm install -gg grunt-cli --force
于 2021-11-05T01:24:57.110 回答
0

如果您更改NodeJS版本,则会出现此问题。

更改节点版本后,重新安装gruntnpm install将解决问题。

于 2019-08-14T12:58:30.133 回答
0

尝试了上面的所有答案,如果不使用 sudo 我就无法工作

终于看到这篇 Wordpress 文章并删除了指向/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

于 2020-04-20T03:22:18.467 回答