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

将JS配置转为字符串时导入值解析异常的问题求助

问题描述

尝试将JS配置转换为字符串时,处理导入值遇到问题。当前代码运行后输出带导入引用的字符串,期望直接显示变量的实际值。

现有代码

import { TEST } from "./config";

export default function App() {
  let configString = (() => {
    var configOptions = {
      message: TEST.Success
    };
  }).toString();

  configString = configString.slice(
    configString.indexOf("{") + 1,
    configString.lastIndexOf("}")
  );

  return <p>{configString}</p>;
}

当前输出

var configOptions = { message: _config.TEST.Success };

期望输出

var configOptions = { message: Success };
解决方案

核心思路是先获取配置对象的实际值,再基于实际值构建目标字符串,而非直接将函数转为字符串(这种方式会保留变量引用而非实际值)。

方法1:利用JSON.stringify转换后调整格式

import { TEST } from "./config";

export default function App() {
  const configOptions = {
    message: TEST.Success
  };
  // 先用JSON.stringify获取值的字符串,再拼接成目标格式
  const configString = `var configOptions = ${JSON.stringify(configOptions)};`;

  return <p>{configString}</p>;
}

方法2:手动构建字符串

如果需要更自定义的格式,可以直接拼接变量的实际值:

import { TEST } from "./config";

export default function App() {
  const configString = `var configOptions = { message: ${TEST.Success} };`;

  return <p>{configString}</p>;
}

说明

原代码中使用Function.toString()的方式,本质是获取函数的源码字符串,而非执行函数后的值,所以会保留TEST.Success的引用路径。上述两种方法都是先拿到TEST.Success的实际值,再构建想要的字符串,就能得到期望的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:31:07