• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

4.5K
Views
Error de referencia no capturado: el proceso no está definido

Estoy usando node.js para crear una aplicación web. Cuando ejecuto la aplicación (ya sea abriendo index.html en el navegador o usando el comando "npm start" en la terminal) obtengo dos errores:

Error de referencia no capturado: el proceso no está definido

Error de referencia no capturado: el requerimiento no está definido

Resolví el error "requerir no está definido" al incluir específicamente en mi etiqueta de encabezado index.html el enlace a este script, donde se define la función requerida. Sin embargo, no puedo encontrar algo similar para la función de proceso.

Mi pregunta es doble:

  1. ¿Por qué es necesario volver a definir los módulos integrados de node.js? ¿Por qué no se reconocen como son, es decir, "módulos incorporados"? ¿El término "módulo incorporado" no significa que un módulo no necesita ser redefinido externamente/de segunda mano?

  2. ¿Hay alguna manera de resolver este problema? Mi secuencia de comandos es muy simple, solo estoy tratando de usar una función básica de node.js, por lo que no puedo descifrar qué errores podría haber cometido.

Si alguien ha tenido este problema y ha encontrado una forma de evitarlo o una razón por la que esto sucede, sería de gran ayuda.

about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

El código de Node.js debe ejecutarlo el proceso del nodo, no el navegador (el código debe ejecutarse en el servidor).

Para ejecutar el código, debe ejecutar el comando:

 node server.js

Y luego puede acceder a su servidor desde un navegador escribiendo " http://localhost:8080 ", por ejemplo. Debes tener un archivo server.js (o el que sea) con el código del servidor que quieras (en este caso, creando un servidor web en el puerto 8080).

Puede seguir este sencillo ejemplo, utilizando express como módulo de servidor http: http://expressjs.com/starter/hello-world.html

about 3 years ago · Santiago Trujillo Report

0

Webpack puede inyectar variables de entorno en el código .js del "lado del cliente" (muy útil en el caso de SPA/PWA). Debe definirlos como complementos en webpack.config.js

 webpack.config.js module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.MY_ENV': JSON.stringify(process.env.MY_ENV), ... and so on ... }) ], }

Ahora puede acceder a él en el lado del cliente:

 app.js // Something like that if(process.env.NODE_ENV === 'debug'){ setDebugLevel(1) }
about 3 years ago · Santiago Trujillo Report

0

Si enfrenta este problema y está utilizando un paquete web, puede obtener los datos de process deseados inyectados en el paquete del cliente utilizando DefinePlugin dentro de su webpack.config.js .

En el siguiente ejemplo, muestro cómo agregar varias cosas al objeto process.env para que estén disponibles en el navegador:

  1. todas las variables de entorno dentro .env usando la biblioteca dotenv
  2. el valor de NODE_ENV , que es 'development' o 'production'

ejemplo de trabajo

 # .env API_KEY=taco-tues-123 API_SECRET=secret_tacos
 // webpack.config.js const dotenv = require('dotenv').config({ path: __dirname + '/.env' }) const isDevelopment = process.env.NODE_ENV !== 'production' module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env': JSON.stringify(dotenv.parsed), 'process.env.NODE_ENV': JSON.stringify(isDevelopment ? 'development' : 'production'), }), ].filter(Boolean), }
 // Within client side bundle (React) // src/App.jsx console.log(process.env) // {API_KEY: "taco-tues-123", API_SECRET: "secret_tacos"} console.log(process.env.NODE_ENV) // development

Tenga en cuenta que console.log(process.env) solo tiene los valores del archivo .env y que NODE_ENV no forma parte del objeto process.env .

En el siguiente ejemplo, muestro cómo estaba tratando de inyectar el objeto process.env que me llevó a este desbordamiento de pila. También incluyo un punto destacado de la documentación del paquete web sobre por qué el siguiente código no funcionaba.

ejemplo roto

 module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env': { ...dotenv.parsed, 'NODE_ENV': JSON.stringify(isDevelopment ? 'development' : 'production') } }), ].filter(Boolean), }
 // Within client side bundle (React) // src/App.jsx console.log(process.env) // Uncaught ReferenceError: taco is not defined console.log(process.env.NODE_ENV) // development

Del paquete web DefinePlugin docs :

Advertencia Al definir valores para el proceso, prefiera

'process.env.NODE_ENV': JSON.stringify('production')

terminado

process: { env: { NODE_ENV: JSON.stringify('production') } }

El uso de este último sobrescribirá el objeto de proceso, lo que puede romper la compatibilidad con algunos módulos que esperan que se definan otros valores en el objeto de proceso.

!¡Advertencia!

Inyectar dotenv.parsed en el paquete del cliente como se describe expondrá estos secretos al cliente. Para fines de desarrollo, no es un gran problema, pero en un entorno de producción implementado, cualquier contraseña o clave de API privada será visible para cualquiera que las busque.

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error