跳到主要内容

yarn 无法执行

按yarn的官方文档执行corepack enable之后执行yarn会报错如下

Internal Error: Cannot find module 'C:\Users\XXX\.node\corepack\yarn\3.2.3\yarn.js'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
at Module.loadMainModule (C:\Users\XXX\AppData\Roaming\nvm\v16.17.1\node_modules\corepack\dist\corepack.js:16234:70)
at Module.runVersion (C:\Users\XXX\AppData\Roaming\nvm\v16.17.1\node_modules\corepack\dist\corepack.js:15878:52)
at executePackageManagerRequest (C:\Users\XXX\AppData\Roaming\nvm\v16.17.1\node_modules\corepack\dist\corepack.js:16123:62)
at async BinaryCommand.validateAndExecute (C:\Users\XXX\AppData\Roaming\nvm\v16.17.1\node_modules\corepack\dist\corepack.js:12484:26)
at async Cli.run (C:\Users\XXX\AppData\Roaming\nvm\v16.17.1\node_modules\corepack\dist\corepack.js:12145:24)
at async main (C:\Users\XXX\AppData\Roaming\nvm\v16.17.1\node_modules\corepack\dist\corepack.js:16163:16)

解决办法是,执行yarn的时候会在C:\Users\XXX\.node\corepack\下生成名为corepackxxxxxxxxx的文件夹,把它下面的yarn.js移动到C:\Users\XXX\.node\corepack\yarn\3.2.3\yarn.js即可(版本不一定是3.2.3,要看你当时在用哪个版本了)。

另外如果corepackxxxxxxxxx的文件夹很多,把它们都删掉,再执行一遍yarn,它会再生成一个最新的,把它下面的yarn.js复制过去即可。

可能是windows的权限问题,没有办法自动把corepack下面的文件复制过去。