我有一个getElementByTagName("BillNumber").("Header").(i)
Docker映像。当我以root用户身份运行映像时,没有任何问题,但是当我使用另一个用户并尝试执行node:alpine
时,程序包提取会收到很多错误:
npm install
在收到5000条WARN消息后,我在npm安装日志中看到了这一点:
npm WARN tar EPERM: operation not permitted, futime
而且,npm安装过程已完全挂起。
有人知道这个错误,知道如何避免吗?
答案 0 :(得分:6)
WSL解决方案:
我通过用默认权限绑定到我的用户而不是root挂载C:/来解决了这个问题。我在这里遵循了指南:https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata,uid=1000,gid=1000,umask=22,fmask=111
这将所有文件以我的用户身份而不是以root用户身份装载到C驱动器上。因此,不需要sudo即可运行npm i
答案 1 :(得分:1)
在将项目从Windows迁移到Linux之后,我也在Windows Linux子系统中拥有此功能。我没有用
修复它rm -rf node_modules
rm package-lock.json
npm cache clear --force
chown -R username:username *
npm install
这些都不起作用。
futime
错误是由于tar
实用程序没有足够的权限来执行必要的操作来扩展npm和节点模块使用的.tar文件而引起的。
对于Alpine Linux,您可能需要先以root身份解压缩,然后chown
将文件解压缩,或者创建一个具有正确权限的用户拥有的文件夹。
对于Linux的Windows子系统,它似乎不适用于/mnt/c
下的文件夹,并且拒绝更改权限。在Linux中设置它们没有任何作用,在Windows中设置它们似乎也没有任何区别-将完全控制权添加到“所有人”的原则也无法解决此问题。
(可能的)高山解决方案:
sudo mkdir project_folder
sudo chown username project_folder
cd project_folder
...
WSL解决方案:
将文件夹移至WSL文件夹,例如。 mv project ~\
,以便权限可以正常工作。
答案 2 :(得分:0)
尝试使用此命令可能会有所帮助:
npm install --user
答案 3 :(得分:0)
这不是一种优雅的解决方案,但是可以工作... 在您的应用程序目录中:
rm -rf node_modules
mkdir /home/your_user/node_modules
ln -s /home/your_user/node_modules node_modules
npm install
答案 4 :(得分:0)
在您的计算机上启用“开发者模式”,然后重新启动以解决此问题!
以下是有关如何在需要时启用开发者模式的指南:https://www.wikihow.com/Enable-Developer-Mode-in-Windows-10#/Image:Enable-Developer-Mode-in-Windows-10-Step-5-Version-3.jpg