我正在接管一个现有的项目。它包含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');
谁/什么提供此模块?
答案 0 :(得分:7)
删除node_modules(令我惊讶的是源代码控制下)并运行
npm cache clean
npm install
解决了这个问题。
答案 1 :(得分:1)
从npm @ 5开始,npm缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的。如果要确保所有内容都一致,请改用npm cache verify
。
如果要强行清理,请在运行npm cache clean --force
后尝试npm cache verify