【问题标题】:Cannot find module 'findup-sync' when trying to run grunt尝试运行 grunt 时找不到模块“findup-sync”
【发布时间】:2013-03-16 00:08:00
【问题描述】:

安装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

【问题讨论】:

  • 我遇到了这个问题,因为我安装了 grunt-cli 和像这样 npm install -g grunt grunt-cli 的 grunt。 grunt-cli 需要在 grunt 之前安装,所以应该是npm install -g grunt-cli grunt
  • 我有一个非常相似的错误,切换 npm install 的顺序也为我做了。

标签: node.js gruntjs


【解决方案1】:

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

npm install findup-sync -g

npm link findup-sync

【讨论】:

  • 您可能会认为这会根据错误起作用,但实际上我已经在正确的位置拥有了 findup-sync 文件。我又跑了一次,但仍然是同样的错误。 FWIW 我在 OS X 上遇到了这个问题。可能是 Node 或 Grunt 发行版错误。
【解决方案2】:

我在全局和我的 repo 中重新安装了 grunt-cli,让我的再次运行。

npm install -g grunt-cli

cd myrepo

npm install grunt-cli

我认为 Yosemite 的安装破坏了我文件中的一些内容...

【讨论】:

  • yarn global add grunt-cli 纱线用户
【解决方案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。

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      遵循@davidcondrey 的建议对我有用。真正的问题是安装 grunt-cli before grunt。订单产生了影响并修复了它。

      npm i -g grunt-cli grunt
      

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

          sudo npm remove -g grunt-cli
          sudo npm install -g grunt-cli
          

          【讨论】:

          • sudo? sudo 应该不需要
          【解决方案8】:

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

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

          【讨论】:

            【解决方案9】:

            尝试了上面所有的答案,如果不使用 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

            【讨论】:

              【解决方案10】:

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

              npm install -gg grunt-cli --force
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-12-14
                • 1970-01-01
                • 2020-04-18
                • 1970-01-01
                • 2021-09-01
                • 2022-01-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多