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

在NestJS中使用yargs报错:yargs_1.default.options is not a function

解决yargs在NestJS中出现TypeError: yargs_1.default.options is not a function的问题

问题场景

在NestJS应用中尝试用yargs获取命令行参数,cli.ts代码如下:

import yargs from 'yargs';

const argv = yargs
  .options('awsRegion', {
    description: 'AWS Region (e.g. us-east-1, us-west-1)',
    alias: 'aws-region',
    type: 'string',
    default: 'aws-east-1',
  })
  .options('avbLeaderId', {
    description: 'leader id to be used for leader election',
    alias: 'avb-leader-id',
    type: 'string',
    default: 'avb-leader-id',
  })
  .parseSync();

export default argv;

在DbService构造函数中调用参数:

export class DbService {
  private client: DynamoDB;
 
  constructor() {
    this.client = new DynamoDB({
      region: argv.awsRegion,
    });
  }
}

执行npm run start:dev --aws-region=us-west-1时抛出错误:

.options('awsRegion', {
   ^
TypeError: yargs_1.default.options is not a function

解决方案

1. 修正yargs导入与初始化方式

yargs v16+版本的ES模块导入需要显式传入命令行参数数组,结合hideBin处理掉node和脚本路径参数,修改cli.ts:

import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';

// 修正默认区域为正确的us-east-1
const argv = yargs(hideBin(process.argv))
  .options('awsRegion', {
    description: 'AWS Region (e.g. us-east-1, us-west-1)',
    alias: 'aws-region',
    type: 'string',
    default: 'us-east-1',
  })
  .options('avbLeaderId', {
    description: 'leader id to be used for leader election',
    alias: 'avb-leader-id',
    type: 'string',
    default: 'avb-leader-id',
  })
  .parseSync();

export default argv;

2. 修正命令行参数传递方式

NestJS的npm run start:dev命令需要把自定义参数放在--之后,正确命令为:

npm run start:dev -- --aws-region=us-west-1

--会告诉npm将后续参数传递给实际执行的NestJS脚本。

3. 可选:添加类型提示(增强TS支持)

定义参数接口来获得类型校验:

interface CliArgs {
  awsRegion: string;
  avbLeaderId: string;
}

const argv = yargs(hideBin(process.argv))
  // 保持原有配置
  .parseSync() as CliArgs;

原因说明

  • 新版yargs不再直接导出可链式调用的默认实例,必须传入命令行参数数组后才能调用options等方法,之前的写法导致获取的yargs对象无options方法,触发类型错误。
  • 原代码中默认AWS区域aws-east-1是错误的,修正为us-east-1避免后续DynamoDB连接失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:48:23