执行npm publish等命令报ENOTDIR invalid directory错误求助
问题原因
你项目package.json中的directories.bin配置错误:directories字段下所有属性对应的取值必须是目录路径,而你填写了index.js这个具体文件路径。npm在执行启动脚本、发布等涉及项目路径扫描的操作时,会尝试将index.js作为目录读取,因此抛出ENOTDIR(目标路径不是目录)错误。
yarn major这类仅操作版本号的脚本不需要读取该配置项,因此可以正常执行。
修复方案
根据你的实际需求选择对应修改方式:
- 如果你是要配置CLI工具的入口文件,请删除
directories下的bin配置,新增顶层bin字段:
{ "main": "index.js", // 新增顶层bin字段指向入口文件 "bin": "index.js", "directories": { "lib": "lib" }, // 其余配置保持不变 }
- 如果你确实有专门存放可执行文件的独立目录,请将
directories.bin的取值修改为对应目录路径,例如可执行文件存放在项目根目录的bin文件夹下时,配置如下:
"directories": { "lib": "lib", "bin": "bin" }
验证操作
修改配置后按以下步骤验证修复效果:
- 删除项目下的
node_modules文件夹、package-lock.json或yarn.lock文件,避免缓存干扰 - 重新执行
npm install或yarn install安装依赖 - 测试
npm start是否可以正常启动,执行npm publish --dry-run模拟发布流程,确认无报错。
内容的提问来源于stack exchange,提问作者YT GAMEWORKS
相关产品推荐
相关产品推荐

