【发布时间】:2017-09-08 22:16:08
【问题描述】:
找不到这个确切问题的答案。我想在我的 /public 文件夹中有一个 data.JSON 文件,其中包含一个静态文件,一旦构建了站点,我就可以快速修改而无需重新构建站点。但是,我正在努力解决如何对此做出反应。我已经尝试按照README 的说明进行操作,但有点不清楚。
如果我尝试:
class Home extends Component {
render() {
const data = require(`${process.env.PUBLIC_URL}/data.json`);
我在编译时收到消息:
./src/Home.js
Module not found: You attempted to import /data.json which falls outside of the project src/ directory. Relative imports outside of src/ are not supported. You can either move it inside src/, or add a symlink to it from project's node_modules/.
包含它的正确方法是什么?我还尝试了一种 hacky 方法,尝试将其写入 public/index.html 中的 window.DATA 但因为我相信它必须调用异步(否则 chrome 会给我一个错误)有时数据会在那里,有时不会,而 React似乎不喜欢它。我试过的代码:
var request = new XMLHttpRequest();
request.open("GET", "%PUBLIC_URL%/data.json", true);
request.send(null);
request.onreadystatechange = function() {
if ( request.readyState === 4 && request.status === 200 ) {
window.DATA = JSON.parse(request.responseText);
}
}
任何帮助将不胜感激!
【问题讨论】:
-
您是否尝试过按照错误信息提示使用绝对路径?
-
喜欢从 './data.json 导入数据?如何在前面添加公共 URL?或者是其他东西?在自述文件中似乎可以做到。
-
我相信如果您的
data.json文件在src目录之外,您将不得不使用绝对路径,或者将您的data.json文件放在项目的/src/目录中,如果你想使用相对路径。 -
@reubenb87 除了使用下面的答案之外,您还能找到另一种从公用文件夹中调用 .json 的方法吗?我也在寻找只是需要它的地方。
-
对不起@DavidTrinh 我通过下面接受的回复让它工作了,一旦它工作只是专注于其他项目!
标签: json reactjs create-react-app