diff --git a/tools/meteor_npm.js b/tools/meteor_npm.js index 42cf2df36f2..3284db4dc47 100644 --- a/tools/meteor_npm.js +++ b/tools/meteor_npm.js @@ -62,6 +62,19 @@ _.extend(exports, { var newPackageNpmDir = packageNpmDir + '-new-' + self._randomToken(); try { + // v0.6.0 had a bug that could cause .npm directories to be + // created without npm-shrinkwrap.json + // (https://github.com/meteor/meteor/pull/927). Running your app + // in that state causes consistent "Corrupted .npm directory" + // errors. + // + // If you've reached that state, delete the empty directory and + // proceed. + if (fs.existsSync(packageNpmDir) && + !fs.existsSync(path.join(packageNpmDir, 'npm-shrinkwrap.json'))) { + files.rm_recursive(packageNpmDir); + } + if (fs.existsSync(packageNpmDir)) { // we already nave a .npm directory. update it appropriately with some ceremony involving: // `npm install`, `npm install name@version`, `npm shrinkwrap`