WSL 秋季创作者更新后的 npm WARN tar EINVAL
npm WARN tar EINVAL after WSL Fall Creators Update
问题:
我刚刚在安装 Fall Creators Update 后更新了我的 WSL 安装,现在当我 运行 npm i
我从 npm
收到以下警告时,我可能收到其中的 2-20 个每次我安装时都会收到来自随机包的警告,它从来都不一致。有时它甚至可以工作,没有警告。我认为这可能没问题,但是当我 运行 我的项目 npm run dev
时,我遇到了各种各样的错误。在我看来,这些软件包没有正确安装。但有时 不会 显示应用程序 运行 预期的警告。我测试了一些来自 GitHub 和相同问题的随机项目。
版本:
- NPM 版本:5.5.1
- NodeJS 版本:8.9.0
- 其他因素:ZSH
错误:
npm WARN tar EINVAL: invalid argument, open '/mnt/c/Users/Me/Documents/project/node_modules/.staging/parse-json-07a114c7/index.js'
npm WARN tar EINVAL: invalid argument, open '/mnt/c/Users/Me/Documents/Project/node_modules/.staging/esrecurse-fe2bc2eb/package.json'
备注:
- 尝试全新安装 WSL,同样的问题
- 可以毫无问题地全局安装,只是在
/mnt/**
路径中似乎失败。
- 可以确认它在 Linux 文件夹中工作,在主目录中成功安装,但在
/mnt/**
上中断
编辑: 经过多次故障排除后,我决定在没有 ZSH 的情况下 运行 并切换回使用 bash.exe
而不是建议的 wsl.exe
。第一次安装成功。进一步测试。
问题实际上出在秋季创意者更新上。进行了许多优化,似乎与符号链接安装的驱动器有关的问题出现了问题。查看所有技术对话 here
有两个解决方案,第一个和推荐,WSL 团队已经修复并且修复在 Insiders Build 17035 中。此修复需要转到设置 -> Insiders -> 选择 "get Active Builds" 然后 "Fast Ring"。仅当您有处理偶尔中断的经验时才这样做,因为它本质上是测试版软件。
修复第二个问题,如果您无法更新或对 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
解决方案确实消除了许多性能提升,但只有在确实需要时才这样做。
问题:
我刚刚在安装 Fall Creators Update 后更新了我的 WSL 安装,现在当我 运行 npm i
我从 npm
收到以下警告时,我可能收到其中的 2-20 个每次我安装时都会收到来自随机包的警告,它从来都不一致。有时它甚至可以工作,没有警告。我认为这可能没问题,但是当我 运行 我的项目 npm run dev
时,我遇到了各种各样的错误。在我看来,这些软件包没有正确安装。但有时 不会 显示应用程序 运行 预期的警告。我测试了一些来自 GitHub 和相同问题的随机项目。
版本:
- NPM 版本:5.5.1
- NodeJS 版本:8.9.0
- 其他因素:ZSH
错误:
npm WARN tar EINVAL: invalid argument, open '/mnt/c/Users/Me/Documents/project/node_modules/.staging/parse-json-07a114c7/index.js'
npm WARN tar EINVAL: invalid argument, open '/mnt/c/Users/Me/Documents/Project/node_modules/.staging/esrecurse-fe2bc2eb/package.json'
备注:
- 尝试全新安装 WSL,同样的问题
- 可以毫无问题地全局安装,只是在
/mnt/**
路径中似乎失败。 - 可以确认它在 Linux 文件夹中工作,在主目录中成功安装,但在
/mnt/**
上中断
编辑: 经过多次故障排除后,我决定在没有 ZSH 的情况下 运行 并切换回使用 bash.exe
而不是建议的 wsl.exe
。第一次安装成功。进一步测试。
问题实际上出在秋季创意者更新上。进行了许多优化,似乎与符号链接安装的驱动器有关的问题出现了问题。查看所有技术对话 here
有两个解决方案,第一个和推荐,WSL 团队已经修复并且修复在 Insiders Build 17035 中。此修复需要转到设置 -> Insiders -> 选择 "get Active Builds" 然后 "Fast Ring"。仅当您有处理偶尔中断的经验时才这样做,因为它本质上是测试版软件。
修复第二个问题,如果您无法更新或对 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
解决方案确实消除了许多性能提升,但只有在确实需要时才这样做。