Reputation: 4392
I am trying to learn react + express
. Here is the folder structure I am following .
app
-client
-components
-home.jsx
-nodemodules
-server
-config.js
-package.json
-routes.js
**Package.json :
{
"name": "job-application",
"version": "1.0.0",
"description": "making a website using MERN ",
"main": "nodemon config.js",
"scripts": {
"start": "node config.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/devarashetty/webApplication.git"
},
"author": "sairam",
"license": "ISC",
"bugs": {
"url": "https://github.com/devarashetty/webApplication/issues"
},
"devDependencies": {
"babel-core": "^6.0.14",
"babel-loader": "^6.0.0",
"webpack": "^1.12.2",
"webpack-dev-server": "^1.12.1"
},
"dependencies": {
"express": "3.x",
"http": "*",
"react": "*",
"react-dom": "*",
"react-router": "*",
"react-router-dom": "*",
"react-router-config": "*",
"nodemon": "*",
"mongodb": "*",
"semantic-ui-react": "*"
},
"homepage": "https://github.com/devarashetty/webApplication#readme"
}
Routes.js
import HomePage from './client/components/home';
I am getting error Unexpected token import
.What's the reason behind this.I thought import was a default function availble in javascript
config.js
var http = require("http");
var mongodb = require("mongodb");
var app = require('express')();
var server = require('http').Server(app);
var routes = require("./routes.js");
var Router = require('react-router');
server.listen(8000);
app.use(function(req, res, next) {
console.log("------------", req.url);
var router = Router.create({
location: req.url,
routes: routes
});
router.run(function(Handler, state) {
var html = React.renderToString( < Handler / > )
return res.render('react_page', {
html: html
})
})
});
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/catering';
MongoClient.connect(url, function(err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
console.log('Connection established to', url);
db.close();
}
});
Upvotes: 0
Views: 820
Reputation: 530
This is a solution that is working and may not be the best solution :)
First in your package.json
change start
key as below.
"start": "node ./bin/www"
Now create a folder called bin
with a file called www
inside it [Note: it doesn't have any extension]
Put following code inside www
#!/usr/bin/env node
require("babel-register")({
presets: ["es2015", "react"],
});
var app = require('../app');
app.set('port', process.env.PORT || 3000);
app.listen(app.get('port'));
Fourth, rename config.js
to app.js
and add module.exports = app
at the end of the file
Make sure you have these dependencies in your package.json
[The version can be newer]
"babel-cli": "^6.18.0",
"babel-core": "^6.18.2",
"babel-loader": "^6.2.8",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.11.1",
Now you can use import
in other files except the files used above.
Upvotes: 1