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

如何在运行时通过文件名读取config.ts并自动填充配置属性?

可以实现,以下是几种可行方案

直接导入(最推荐)

如果不需要动态指定文件名,直接导入是最简单的方式,process.env 变量会自动填充:

// 其他模块中
import config from './config';

console.log(config.token); // 自动获取 process.env.API_TOKEN 的值

动态导入(支持传文件名)

如果必须动态传入文件名,用 ES 动态导入语法即可,环境变量同样会自动填充:

async function loadConfig(filePath: string) {
  const { default: config } = await import(filePath);
  return config;
}

// 使用示例
loadConfig('./config').then(config => {
  console.log(config.token); // 已自动填充环境变量值
});

注意:动态导入需要运行环境支持 ES 模块,或者打包工具(如 Webpack、Vite)配置正确。

读取源码解析(特殊场景用)

如果要直接读取未编译的 TS 文件源码,需要用 fs 读取内容后,借助 TypeScript 编译器 API 转译执行,这种方式复杂且性能一般,仅适用于特殊需求:

import fs from 'fs';
import * as ts from 'typescript';

function loadTsConfig(filePath: string) {
  const content = fs.readFileSync(filePath, 'utf8');
  const jsContent = ts.transpile(content, {
    module: ts.ModuleKind.CommonJS,
    target: ts.ScriptTarget.ES2020
  });
  
  const module = { exports: {} };
  eval(jsContent);
  return module.exports.default;
}

// 使用示例
const config = loadTsConfig('./config.ts');
console.log(config.token);

关键提示

  • 所有方案中,process.env 变量都会在代码执行时自动注入,token、buildId 这类属性会自动填充对应值。
  • 动态导入的文件路径需为相对当前模块的路径或绝对路径,确保 Node.js 能正确定位模块。
  • 浏览器环境下,需确保打包工具已完成环境变量注入(比如 Vite 的 import.meta.env、Webpack 的 DefinePlugin)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:32:12