npm 和 Yarn 的常见报错

在 VMware 下的 Linux 中的共享文件夹中使用 npm install 时报错

报错信息

npm ERR! code ENOTSUP
npm ERR! syscall symlink
npm ERR! path ../@babel/parser/bin/babel-parser.js
npm ERR! dest /mnt/hgfs/SharedFolder/notebooks/test/node_modules/.bin/parser
npm ERR! errno -95
npm ERR! ENOTSUP: operation not supported on socket, symlink '../@babel/parser/bin/
babel-parser.js' -> '/mnt/hgfs/SharedFolder/notebooks/test/node_modules/.bin/parser'

环境

Win 11 + VMware 下的 Linux + VMware 的共享文件夹

分析

该报错说的是无法创建一个符号链接。(实测在 VMware 下的 Linux 中的共享文件夹中创建符号链接会报错,报错信息中有 Operation not supported。)

解决方案

  1. 使用 npm config set bin-links false ,让 npm 不创建符号链接。bin-links 选项可以用来控制 npm 是否为包可执行文件创建符号链接。
  2. 不在该共享文件夹下使用 npm install,直接在 Linux 中操作。不能创建符号链接的话,npm 在安装依赖时,就无法在 node_modules/.bin 目录下为可执行文件创建符号链接。这样的话,在用 npm run xxx 之类命令时就会报错 xxx not found,因为 npm 在 node_modules/.bin 目录中找不到相应的可执行文件。