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

时间:2019-06-05 21:02:05

标签: node.js grunt-cli

我正在先前构建的项目中工作。该项目是使用Node和Grunt构建的。 我在项目的根文件夹中有一个Gruntfile.js。

我使用

在本地和全局安装了grunt
npm i grunt
npm i -g grunt

之后,我使用

在本地和全局安装了grunt-cli
npm i grunt-cli
npm i -g grunt-cli

当我尝试运行任何grunt命令(开发,初始化等)时,都会收到错误消息

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-grunt-cli,就像CPBL在他的评论中说的那样
apt install node-grunt-cli

在OSX上不需要。

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

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

2 个答案:

答案 0 :(得分:2)

感谢帕勃罗·洛佩斯(Pablo Lopes)将我带入正确的道路(请参阅他的问题,其中包括答案)。我通过以下方式解决了我的问题:

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

  2. 使用sudo运行咕unt声: sudo grunt

这不是理想的解决方案,因为它在运行grunt时需要使用sudo-不必要。

答案 1 :(得分:0)

对我来说,通过apt安装是问题的原因。通过npm npm install grunt -g安装可以解决此问题。考虑到apt现有的全局grunt安装,您可能需要添加--force才能覆盖。