José Carlos
José Carlos

Reputation: 2922

Nodejs: How to prepare code for production environment

I'm a beginner developing with Nodejs and React.

Right now, I've got a first version of my web application which works correctly in development environment, but I'm trying to build a version for production environment but I've got this error

ReferenceError: document is not defined

The scripts of my package.json are:

  "scripts": {
    "dev-webpack": "webpack-dev-server --hot --mode development",
    "clean": "rm -rf ./dist",
    "dev": "npm run build-dev && cross-env NODE_ENV=development nodemon --exec babel-node src/server/server.js --ignore ./src/client",
    "build-dev": "npm run clean && npm run compile-dev",
    "compile-dev": "NODE_ENV=development webpack -d --config ./webpack.config.babel.js --progress",    
    "compile": "NODE_ENV=production webpack -p --config ./webpack.config.babel.js --progress",
    "build": "npm run clean && npm run compile",
    "start": "npm run build && node ./dist/assets/js/bundle.js"
  },

And I try to create the version for production environment with the command npm run start

I have been looking for information about the problem and it seems it's due because I have no Browserify my web application. But, I don't know how to do this correctly nor the steps to follow to do it correctly.

I am seeking a list of the steps required to build a correct version for production environment.

Edit I:

These are the static files generated with "build" script:

enter image description here

Upvotes: 4

Views: 1495

Answers (2)

Marvin
Marvin

Reputation: 485

You need to serve your index.html file. You can use serve to host the HTML file.

Upvotes: 0

Quentin
Quentin

Reputation: 943108

The React application is designed to be run in a browser.

When you run dev-webpack you are running an HTTP server and pointing a browser at it.

When you run build you are creating a static JavaScript file. You need to deploy it to a web server (along with the associated HTML document) and then point a browser at the HTML document.

You are currently trying to execute bundle.js with Node and not a browser.

Upvotes: 2

Related Questions