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

全局安装npm包youtube-playlist-export后运行报ENOENT无此文件错误

问题原因
  1. 你使用的read-pkg库默认会读取当前命令执行工作目录下的package.json,你在用户主文件夹运行ytpl-export命令时,该目录下不存在对应工具的package.json,直接触发文件不存在报错。
  2. 你的npm包配置中files字段仅指定了source文件夹,发布包时根目录的package.json没有被打包上传到npm,就算指定读取路径也无法找到该文件。
修复方案

1. 调整npm包发布配置

修改package.json的files字段,将根目录的package.json加入发布文件列表:

{
  "files": [
    "source",
    "package.json"
  ]
}

2. 修正package.json读取路径

修改source/cli.js代码,显式指定读取CLI工具自身根目录下的package.json,不要使用默认的当前工作目录:
首先引入路径处理相关模块:

import { fileURLToPath } from 'url';
import { dirname, join } from 'path';

然后替换原有readPackage调用逻辑:

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// 从cli.js所在的source目录上溯一级,即为包根目录,对应package.json位置
const pkg = await readPackage({ cwd: join(__dirname, '..') });

3. 可选优化

给异步自执行函数添加异常捕获逻辑,避免后续未知异常抛出未处理的Promise拒绝,提升使用体验:

(async () => {
  // 原有业务逻辑
})().catch(err => {
  console.error(c.red('运行出错:' + err.message));
  process.exit(1);
});

修改完成后重新发布新版本到npm,再全局安装测试即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:09:03