咕噜失败,“找不到模块'tmp'”

时间:2014-08-24 16:01:36

标签: gruntjs npm

我正在接管一个现有的项目。它包含package.json和Gruntfile。根据说明here我跑了

npm install

在全球范围内安装grunt-cli后。

但是,运行grunt会导致

$ grunt --env=production
Loading "compass.js" tasks...ERROR
>> Error: Cannot find module 'tmp'
Warning: Task "compass" not found. Use --force to continue.

Aborted due to warnings.

使用-v运行会产生回溯:

Loading "compass.js" tasks...ERROR
>> Error: Cannot find module 'tmp'
>>     at Function.Module._resolveFilename (module.js:338:15)
>>     at Function.Module._load (module.js:280:25)
>>     at Module.require (module.js:364:17)
>>     at require (module.js:380:17)
>>     at Object.exports.init (/..(path)../node_modules/grunt-contrib-compass/tasks/lib/compass.js:4:13)
>>     at Object.module.exports (/..(path)../node_modules/grunt-contrib-compass/tasks/compass.js:12:42)
>>     at loadTask (/..(path)../node_modules/grunt/lib/grunt/task.js:325:10)
>>     at /..(path)../node_modules/grunt/lib/grunt/task.js:361:7
>>     at Array.forEach (native)
>>     at loadTasks (/..(path)../node_modules/grunt/lib/grunt/task.js:360:11)

“..(路径)..”已被我插入替换长基路径,它是项目的根目录。

经过进一步调查后,compass.js会导入'tmp'模块

  var tmp = require('tmp');

谁/什么提供此模块?

2 个答案:

答案 0 :(得分:7)

删除node_modules(令我惊讶的是源代码控制下)并运行

npm cache clean
npm install

解决了这个问题。

答案 1 :(得分:1)

从npm @ 5开始,npm缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的。如果要确保所有内容都一致,请改用npm cache verify

如果要强行清理,请在运行npm cache clean --force后尝试npm cache verify