在 运行 grunt 上找不到模块 'findup-sync'

Cannot find module 'findup-sync' on running grunt

我在以前构建的项目中工作。该项目是使用 Node 和 G运行t 构建的。 我在项目的根文件夹中有一个Gruntfile.js。

我在本地和全局安装了 g运行t,使用

npm i grunt
npm i -g grunt

之后,我在本地和全局安装了 g运行t-cli,使用

npm i grunt-cli
npm i -g grunt-cli

当我尝试 运行 任何 g运行t 命令(develop、init 等)时,出现错误

internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'findup-sync'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:690:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/usr/lib/nodejs/grunt-cli/bin/grunt:8:14)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)

我在很多论坛和这里都搜索过,但我没有找到答案。 有人可以帮助我吗?

更新

在处理此错误超过 24 小时后,我通过以下步骤修复了它:

  1. 通过 apt 在 Ubuntu 中安装 node-g运行t-cli,如 CPBL 在他的评论中所说
apt install node-grunt-cli

在 OSX 上没有必要。

  1. 按照我在此 blog 上找到的步骤进行操作。但是,我还需要 运行 命令
grunt develop

作为 sudo,即使更改了许多文件夹的权限。

感谢 Pablo Lopes 让我走上正轨(请参阅他的问题,其中包含答案)。我通过以下方式解决了我的问题:

  1. 正在通过 apt 安装 node-grunt-cli: sudo apt install node-grunt-cli

  2. 运行 用 sudo 发出咕噜声: sudo grunt

这不是一个理想的修复,因为它需要在 运行 发出咕噜声时使用 sudo - 这不应该是必需的。

对我来说,通过 apt 安装是问题的原因。通过 npm npm install grunt -g 安装解决了这个问题。给定一个现有的来自 apt 的全局 grunt 安装,你可能需要添加 --force 来覆盖。