纱线“错误:EISDIR:对目录进行非法操作,读取”

Jho*_*tan 5 node.js yarnpkg yarn-workspaces yarn-lock.json

突然纱线不工作了。Npm 工作正常,但只能运行yarn -v,任何其他命令(例如yarn、yarn test 或yarn watch)都会显示此错误

Arguments: 
  /home/my.user/.nvm/versions/node/v14.15.4/bin/node /home/my.user/.nvm/versions/node/v14.15.4/bin/yarn

PATH: 
  /home/my.user/.nvm/versions/node/v14.15.4/bin:/home/my.user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Yarn version: 
  1.22.10

Node version: 
  14.15.4

Platform: 
  linux x64

Trace: 
  Error: EISDIR: illegal operation on a directory, read

npm manifest: 
  {
    "name": "one",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
      "test": "echo 'hello'"
    },
    "keywords": [],
    "author": "",
    "license": "ISC"
  }

yarn manifest: 
  No manifest

Lockfile: 
  No lockfile
Run Code Online (Sandbox Code Playgroud)

Lon*_*yen 12

就我而言,删除yarn.lock文件后,我可以正常安装依赖项


小智 5

看来纱线正在寻找.npmrc文件。然而,它找到一个同名的目录,然后在尝试读取它时发出错误。删除该目录将消除该错误。这就是.npmrc删除背后的概念。


Blo*_*gic 4

EISDIR 代表“错误,是目录”。这意味着纱线正在尝试对文件执行某些操作,但它是一个目录。在您的情况下,yarn 正在尝试“读取”一个目录文件(行:4)。由于操作无法完成,因此会引发错误。

这里需要确定三件事。

确保该文件存在。如果没有,您需要创建它。(如果纱线依赖于文件中的任何特定信息,您将需要在那里提供该信息)。

确保它实际上是一个文件而不是目录。它具有正确的权限。您可以将文件更改为具有所有权限

sudo chmod 777 FILE_NAME
Run Code Online (Sandbox Code Playgroud)

(小心:您正在向该文件上的每个人授予读取、写入和执行权限)

  • 我们在这里讨论的是哪个文件?我只是想用yarn 运行npm 脚本。例如纱线手表。我应该查看哪个文件?包.json?一根纱线二进制??? (2认同)