You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo项目执行yarn start时出现ENOTDIR错误的解决方法

问题描述

按照Yarn官方文档激活Yarn后,通过React Native官方文档用Yarn创建了Expo应用,但执行yarn start时出现以下错误:

node:internal/errors:465
ErrorCaptureStackTrace(err);
^

Error: spawn ENOTDIR
at ChildProcess.spawn (node:internal/child_process:413:11)
at Object.spawn (node:child_process:700:9)
at spawn (/Users/minseok/Repository/test/.yarn/cache/cross-spawn-npm-6.0.5-2deab6c280-f893bb0d96.zip/node_modules/cross-spawn/index.js:12:24)
at run (/Users/minseok/Repository/test/.yarn/unplugged/expo-npm-46.0.10-310b54dc3f/node_modules/expo/bin/cli.js:11:12)
at Object.<anonymous> (/Users/minseok/Repository/test/.yarn/unplugged/expo-npm-46.0.10-310b54dc3f/node_modules/expo/bin/cli.js:6:1)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Object.require$$0.Module._extensions..js (/Users/minseok/Repository/test/.pnp.cjs:20807:33)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.require$$0.Module._load (/Users/minseok/Repository/test/.pnp.cjs:20630:22) {
errno: -20,
code: 'ENOTDIR',
syscall: 'spawn'
}

解决方案

这个ENOTDIR错误通常是系统尝试在非目录路径执行文件,或Yarn的PnP机制与Expo CLI兼容性冲突导致的,可尝试以下几种解决方法:

  • 禁用Yarn PnP模式
    在项目根目录创建.yarnrc.yml文件,添加内容:

    nodeLinker: node-modules
    

    删除项目下的.pnp.cjs、.pnp.loader.mjs文件,重新执行yarn install后再运行yarn start。

  • 匹配兼容的Node.js版本
    Expo 46建议使用Node.js 14.x或16.x版本,版本过高/过低易引发兼容问题。可通过nvm切换版本:

    nvm install 16
    nvm use 16
    

    重新执行yarn install和yarn start。

  • 清理缓存并重建依赖

    1. 删除项目内的node_modules目录、.yarn文件夹和yarn.lock文件
    2. 执行yarn cache clean清理Yarn缓存
    3. 重新运行yarn install
    4. 启动项目:yarn start
  • 直接调用Expo CLI启动
    跳过Yarn的包裹逻辑,直接执行Expo的CLI脚本:

    node node_modules/expo/bin/cli.js start
    

内容的提问来源于stack exchange,提问作者minseokk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:15:46