在WSL秋季创作者更新后,npm WARN tar EINVAL

时间:2017-11-02 17:06:15

标签: npm npm-install windows-subsystem-for-linux

问题:

我刚安装了Fall Creators Update后更新了我的WSL安装,现在当我运行let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!) self.presentViewController(svc, animated: true, completion: nil) 时,我从npm i收到以下警告我每次从随机包中得到2-20个这样的警告我安装,它永远不会一致。有时它甚至可以工作,没有警告。我认为这可能没问题,但是当我运行我的项目npm时,我会遇到各种各样的错误。在我看来,包没有正确安装。但是当它没有显示警告时,应用程序按预期运行。我测试了GitHub的一些随机项目和同样的问题。

版本:

  • NPM版本:5.5.1
  • NodeJS版本:8.9.0
  • 其他因素:ZSH

错误:

  

npm WARN tar EINVAL:无效参数,打开' /mnt/c/Users/Me/Documents/project/node_modules/.staging/parse-json-07a114c7/index.js'

     

npm WARN tar EINVAL:无效参数,打开' /mnt/c/Users/Me/Documents/Project/node_modules/.staging/esrecurse-fe2bc2eb/package.json'

备注:

  • 尝试重新安装WSL,同样的问题
  • 可以在没有问题的情况下全局安装,但似乎只在npm run dev路径中失败。
  • 可以确认它在Linux文件夹中有效,在主目录中成功安装,但在/mnt/**
  • 中断

编辑经过多次故障排除后,我决定在没有ZSH的情况下运行并切换回使用/mnt/**而不是建议的bash.exe。首次安装工作。进一步测试。

1 个答案:

答案 0 :(得分:3)

问题实际上是Fall Creators Update。进行了许多优化,似乎与符号链接已安装的驱动器有关的问题。查看所有技术对话here

有两个解决方案,第一个和推荐的,WSL团队已经修复,修复程序在Insiders Build 17035中。此修复需要转到设置 - >内部人士 - >选择"获得Active Builds"然后"快速戒指"。只有你在处理偶尔的休息时才有经验,因为它本质上是测试版软件。

修复第二项并建议如果您无法更新或不熟悉Insiders Builds,请将其添加到您的.bashrc文件中:

if ! mount | grep -q "C: on /mnt/c type drvfs (rw,noatime,fallback=1)"; then
    echo "== Remount of C: drive required =="
    pushd ~ > /dev/null
    sudo umount /mnt/c
    sudo mount -t drvfs -o noatime,fallback=1 C: /mnt/c
    popd > /dev/null
fi

.bashrc解决方案确实消除了许多性能提升,但只有在必要时才会这样做。