No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Preparando API para producción

21/25
Recursos

Para que nuestra API sea accesible desde cualquier lugar debemos añadir el middleware cors a express, primero debemos instalarlo con el siguiente comando:

npm i cors

Aportes 18

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

para usuarios windows usar:

"start": "SET NODE_ENV=production & node index",

En windows el valor de process.env.NODE_ENV me daba 'production ’ más un espacio, haciendo que la variable isDev nunca sea falsa.
para superar lo anterior le tuve que agregar un trim, quedo de la siguiente manera.

const isDev = process.env.NODE_ENV.trimRight() !== ‘production’;

Les comento por si tienen el mismo problema.

Me gustaría saber cuando van a dar el curso avanzado ?

  • Seguridad ?
  • Cuando el proyecto es grande como separar los resolvers, types, schemas entre otros ?

NODE_ENV en Windows

Enero 2022


Les traigo una actualización
a partir las soluciones proporcionadas
por mis compañeros
jhon manuel angulo moncada y Nanglesc


En package.json tendremos

"scripts": {
    "start": "SET NODE_ENV=production & node index",
    "dev": "nodemon -e js,graphql index",
    "lint": "standard",
    "lint-fix": "standard --fix",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

Y asegúrense de quitar el espacio
de la variable NODE_ENV
con trimEnd().

const isDev = process.env.NODE_ENV.trimEnd() !== 'production';

Preparando API para producción

Debemos hacer npm i cors para que nuestra API pueda ser consumida desde cualquier lado.

Para hacer que esté listo nuestro entorno en producción hacemos lo siguiente:

En index.js:

const cors = require("cors");

const isDev = process.env.NODE_ENV.trimRight() !== "production"
//* Hacemos trimRight porque el NODE_ENV viene con un espacio al final, en package.json

app.use(cors());

app.use('/api', graphqlHTTP({
    schema,
    rootValue: resolvers,
    graphiql: isDev
}));

En el package.json:

{
    "scripts": {
        "start": "SET NODE_ENV=production & node index"
    }
}

para apollo-server

const server = new ApolloServer({
  cors: {
    origin: '*',
    credentials: true
  },
  schema,
  playground: true
})

1- Instalar

npm i cors
Mas info <https://expressjs.com/en/resources/middleware/cors.html>

2- En index.js agregar

const cors = require('cors')

3- Validar si estamos en modo desarrollo o produccion

const isDev = process.env.NODE_ENV !== 'production';

app.use('/api', graphqlHTTP({ schema, rootValue: resolvers, graphiql: isDev }));

5- en package.json agregamos una nuevo script que correra en para produccion

  "scripts": {
    "start": "NODE_ENV=production node index",
    "dev": "nodemon -e js,graphql index.js",
    "lint": "standard || exit 0",
    "lint-fix": "standard --fix",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

{“errors”:[{“message”:“Must provide query string.”}]}

Gracias Prof. El curso para principiantes esta bien, en realidad aporto muy poco, con respecto al que ya existia.

Si son usuarios de Windows pueden usar cross-env para no tener problemas con las variables de entorno en los comandos:

// package.json

{
  ...,
  "scripts": {
    "start": "cross-env NODE_ENV=production node index.js",
    "dev": "cross-env NODE_ENV=development nodemon -e js,graphql index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  ...
}

Les facilito aquí la librería de cors para que puedan profundizar en la documentación

Me gustó mucho la clase 20. Excelente forma de hacer búsquedas!

En windows tira error por lo que hay que agregar “SET” antes de “NODE_ENV”

“start”: “SET NODE_ENV=production & node index”

Pero esto genera un espacio vacio despues del string ‘production’ así que simplemente agreguen ese espacio vacio y listo.

const isDev = process.env.NODE_ENV !== 'production ’

Espero les sirva de ayuda

npm ERR! errno 1
npm ERR! [email protected] start: NODE_ENV=production node index.js
npm ERR! Exit status 1

Usen gitbash o zsh en hyper

Muchas gracias por la sencilla y rápida explicación para usar cors instructor Adrián.

Excelente tip

npm ERR! errno 1
npm ERR! [email protected] start: NODE_ENV=production node index.js
npm ERR! Exit status 1