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

如何解决ESLint的@typescript-eslint/no-var-requires报错?

ESLint @typescript-eslint/no-var-requires 报错的解决方法

报错详情

  • 涉及文件:\helpers\getEnvCredentials.ts
  • 报错提示:4:9 error Require statement not part of import statement @typescript-eslint/no-var-requires
  • 问题代码:
const dataCredentials = JSON.parse(
JSON.stringify(
    require("../fixtures/credentials/" + env + "-credentials.json")
    )
);

符合规则的替代写法

方法1:使用ES模块动态import()(适配动态路径场景)

原代码是动态拼接文件路径,推荐用ES模块的动态import语法,注意这是异步操作,需要配合async/await:

async function getEnvCredentials(env: string) {
  // 动态导入JSON文件,默认导出为解析后的JSON对象
  const credentials = await import(`../fixtures/credentials/${env}-credentials.json`);
  const dataCredentials = JSON.parse(JSON.stringify(credentials.default));
  return dataCredentials;
}

// 调用示例(需在异步上下文内)
// const credentials = await getEnvCredentials('dev');

方法2:静态import配合条件判断(适配固定环境分支场景)

如果env的可选值是固定的几个,可通过条件判断使用静态import,保持同步执行:

let dataCredentials: Record<string, any>;
switch (env) {
  case 'dev':
    dataCredentials = JSON.parse(JSON.stringify(import('../fixtures/credentials/dev-credentials.json').default));
    break;
  case 'prod':
    dataCredentials = JSON.parse(JSON.stringify(import('../fixtures/credentials/prod-credentials.json').default));
    break;
  default:
    throw new Error(`Unsupported environment: ${env}`);
}

规则说明

@typescript-eslint/no-var-requires规则旨在强制使用ES模块的import语法替代CommonJS的require调用,除非是在import语句中使用。上述两种写法都符合ESLint的规则要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:39:56