Meteor错误:ENOTEMPTY:目录不为空

时间:2017-06-05 08:21:38

标签: javascript node.js meteor

当我尝试在Meteor https://github.com/vsivsi/meteor-job-collection

中加载以下包时

它被100%下载并解压缩,但在加载时会抛出以下错误:

{ [
Error: ENOTEMPTY: directory not empty, rmdir 'C:\Users\LALITS~1\AppData\Local\Temp\mt-16riklk\npm\job\node_modules']
  errno: -4051,
  code: 'ENOTEMPTY',
  syscall: 'rmdir',
  path: 'C:\\Users\\LALITS~1\\AppData\\Local\\Temp\\mt-16riklk\\npm\\job\\node_modules' }

我使用的是Windows 8.1 64位。 我试图手动删除该文件夹,但它又创建了一个新文件夹并抛出相同的错误。谁能告诉我这是什么问题?我错过了什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

你的问题看起来像这个已知的Meteor bug: https://github.com/meteor/meteor/issues/8663。更新到下一个Meteor版本时,Windows下会出现此错误。

也许您可以尝试建议的解决方案,即编辑以下文件:

C:\Users\[yourName]\AppData\Local\.meteor\packages\meteor-tool\[yourMeteorVersion]\mt-os.windows.x86_32\tools\fs\files.js

...并使用以下代码替换函数files.rm_recursive_asyncfiles.rm_recursive

files.rm_recursive_async = function (path) {
  return new Promise(function (resolve, reject) {
    rimraf(files.convertToOSPath(path), function (err) {
      err &&  console.log(err);
      resolve();
      //return err ? reject(err) : resolve();
    });
  });
}; // Like rm -r.

files.rm_recursive = Profile("files.rm_recursive", function (path) {
  try {
    rimraf.sync(files.convertToOSPath(path));
  } catch (e) {
    if (e.code === "ENOTEMPTY" && canYield()) {
      files.rm_recursive_async(path).await();
      return;
    }

    console.log(e);
    //throw e;
  }
}); // Makes all files in a tree read-only.