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

3

我正在处理一个之前建立的项目。该项目使用Node和Grunt构建。 在项目的根目录中有一个Gruntfile.js文件。

我使用以下命令本地和全局安装了grunt:

npm i grunt
npm i -g grunt

在我安装了本地和全局的grunt-cli之后,使用以下命令:

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

当我尝试运行任何Grunt命令(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. 按照CPBL在评论中提到的方法,在Ubuntu上通过apt安装node-grunt-cli
apt install node-grunt-cli

在OSX上这是不必要的。

  1. 按照我在这个博客中找到的步骤。但是,我还需要运行以下命令:
grunt develop

作为超级用户,即使要更改许多文件夹的权限,也可以实现。

1
尽管已安装了findup-sync(sudo apt install node-findup-sync),但我也遇到了同样的问题。 - CPBL
看我的评论!我修复了这个错误 \o/。也许这对你有用。在尝试后发表评论。 - Pablo Lopes
2个回答

2

感谢Pablo Lopes为我指明了正确的方向(请参见他的问题,其中包含答案)。我解决了我的问题:

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

  2. 使用sudo运行grunt: sudo grunt

这不是一个理想的解决方法,因为运行grunt时需要使用sudo - 这实际上是不必要的。


1
太好了,Dave!我非常高兴这个解决方案对你也有用!我们花了很多小时来解决这个问题 :) - Pablo Lopes

0

对我来说,通过apt安装是问题的原因。通过npm安装npm install grunt -g纠正了这个问题。如果已经存在全局grunt安装,则可能需要添加--force以覆盖。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接