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

React项目如何读取src外JSON?多应用共享数据咨询

React多应用共享根目录env.json的解决方案

问题背景

项目目录结构如下:

项目根目录/
├── server.js
├── env.json
├── react-app-1/
└── react-app-2/

多个React应用需要共享根目录下的env.json数据,尝试通过const env = require('./../../env.json');导入时,触发报错:

Module not found: Error: You attempted to import ./../../env.json which falls outside of the project src/ directory. Relative imports outside of src/ are not supported. [1] You can either move it inside src/, or add a symlink to it from project's node_modules/.

尝试使用dotenv未成功,针对以下问题给出解决方案:


1. 如何创建软链接?

根据操作系统不同,命令有所区别:

  • Mac/Linux 系统:
    进入目标React应用的node_modules目录(未初始化过先执行npm install),执行命令创建软链接:
ln -s ../../env.json env-shared.json

创建完成后,React组件内可直接通过import env from 'env-shared.json'导入文件。

  • Windows 系统:
    以管理员权限打开命令提示符,进入目标React应用的node_modules目录,执行:
mklink env-shared.json ..\..\env.json

若使用PowerShell,执行:

New-Item -ItemType SymbolicLink -Path .\env-shared.json -Target ..\..\env.json

同样可通过import env from 'env-shared.json'完成导入。


2. 本地创建的软链接部署到服务器后是否仍有效?是否需要在服务器重新创建?

本地软链接大概率无法直接在服务器生效:

  • Git默认不会跟踪软链接(需显式配置),即使同步到服务器,软链接的路径是基于本地目录结构的,服务器部署路径可能与本地存在差异。
  • 建议在服务器上重新创建软链接,或在CI/CD部署脚本中加入创建软链接的步骤,确保部署后路径匹配。

3. 还有其他方法可以让React项目访问外部数据吗?

除软链接外,还有三种常用方案:

方案一:通过服务器接口返回

利用根目录的server.js搭建简单接口,例如GET /api/env,在接口内读取env.json内容并返回。React应用通过fetch('/api/env')请求获取数据。这种方式更灵活,还可根据开发/生产环境返回不同配置。

方案二:构建前自动复制文件

在项目根目录编写Node.js脚本,构建前自动将env.json复制到各React应用的src目录:
创建copy-env.js文件:

const fs = require('fs');
const path = require('path');

const envPath = path.resolve(__dirname, 'env.json');
const apps = ['react-app-1', 'react-app-2'];

apps.forEach(app => {
  const targetPath = path.resolve(__dirname, app, 'src', 'env.json');
  fs.copyFileSync(envPath, targetPath);
  console.log(`Copied env.json to ${app}/src`);
});

在每个React应用的package.json中修改脚本:

{
  "scripts": {
    "start": "node ../copy-env.js && react-scripts start",
    "build": "node ../copy-env.js && react-scripts build"
  }
}

方案三:环境变量注入

将env.json的键值对转换为带REACT_APP_前缀的环境变量,写入根目录的.env文件(例如REACT_APP_API_URL=http://xxx)。安装dotenv-cli依赖:

npm install dotenv-cli --save-dev

在React应用的package.json中配置脚本加载根目录的.env:

{
  "scripts": {
    "start": "dotenv -e ../.env react-scripts start",
    "build": "dotenv -e ../.env react-scripts build"
  }
}

之后在React代码中可通过process.env.REACT_APP_API_URL访问对应配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:36:23