I’m new to React and I’m trying to import a JSON DATA
variable from an external file. I’m getting the following error:
Cannot find module “./customData.json”
Could some one help me? It works if I have my DATA
variable in index.js
but not when it’s in an external JSON file.
import React, {Component} from 'react'; import ReactDOM from 'react-dom'; import customData from './customData.json'; import Profile from './components/profile'; import Hobbies from './components/hobbies'; class App extends Component { render() { return ( <div> <Profile name={this.props.profileData.name}imgUrl={this.props.profileData.imgURL} /> <Hobbies hobbyList={this.props.profileData.hobbyList}/> </div> ); } } ReactDOM.render(<App profileData={DATA}/>, document.querySelector('.container'));
import React, {Component} from 'react'; var Hobbies = React.createClass({ render: function(){ var hobbies = this.props.hobbyList.map(function(hobby, index){ return (<li key={index}>{hobby}</li>); }); return ( <div> <h5>My hobbies:</h5> <ul> {hobbies} </ul> </div> ); } }); export default Hobbies;
import React from 'react'; var Profile = React.createClass({ render: function(){ return ( <div> <h3>{this.props.name}</h3> <img src={this.props.imgUrl} /> </div> ) } }); export default Profile
var DATA = { name: 'John Smith', imgURL: 'http://lorempixel.com/100/100/', hobbyList: ['coding', 'writing', 'skiing'] } export default DATA
Advertisement
Answer
One nice way (without adding a fake .js extension which is for code not for data and configs) is to use json-loader
module. If you have used create-react-app
to scaffold your project, the module is already included, you just need to import your json:
import Profile from './components/profile';
This answer explains more.