es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Angular: utils/util.js -> Error de referencia no definida: process

Siento que esto debería resolverse fácilmente, pero después de varios intentos, simplemente no llego a una resolución.

Aquí está el error que he recibido:

Uncaught ReferenceError: process is not defined
38509 @ [RutaAlProyecto]\node_modules\util\util.js:109

Esto se activa cuando instancio web3 en un sitio limpio / nuevo (hay otros dos componentes de ‘prueba’, un enlace y un botón)

He buscado y encontrado numerosas piezas de información que sugieren que
– process es una variable ‘node’ del lado del servidor, y puedo establecer esto para que esté disponible en el cliente agregando a mi webpack.config.js, lo cual he hecho.
– Podría resolverlo simplemente declarando una variable angular global en mi app.component.ts, pero parece que el archivo de dependencia del proyecto no está accediendo a esto.

También he intentado simplemente actualizar el proyecto de dependencia directamente, pero incluso con una compilación, parece que mis cambios no se distribuyen en la construcción / dist / resultado de webpack.

Creo que esto probablemente tenga una solución simple, pero simplemente lo estoy pasando por alto. Aquí estoy girando mis neumáticos y podría usar un poco de ayuda, pero soy el primero en mi círculo en aventurarme en web3 y no tengo un amigo cercano con quien hablar de esto. ¿Puede alguien aquí proporcionar alguna idea o una solución alternativa para resolver este problema?

Código relevante:

webpack.config.js

var webpack = require(‘webpack’);
const path = require(‘path’);

module.exports = {
module: {
rules: [
{
test: /.(sass|less|css|ts)$/,
use: [
‘ts-loader’
],
}
],
},
plugins: [
new webpack.DefinePlugin({
‘process.env.NODE_ENV’: ‘develop’,
})
],
entry: ‘./src/main.ts’,
output: {
filename: ‘main.js’,
path: path.resolve(__dirname, ‘dist’),
},
resolve: {
extensions: [ ‘.js’, ‘.ts’, ‘.html’ ],
modules: [
path.resolve(__dirname, ‘node_modules/’),
path.resolve(“”, “src”)
],
alias: {
Environments: path.resolve(__dirname, ‘src/environments/’),
},
fallback: {
“fs”: false,
“tls”: false,
“net”: false,
“path”: false,
“zlib”: false,
“http”: require.resolve(“stream-http”),
“https”: require.resolve(“https-browserify”),
“stream”: false,
“crypto”: require.resolve(“crypto-browserify”),
“crypto-browserify”: require.resolve(‘crypto-browserify’),
},
}
}

global-constants.ts

export class GlobalConstants {
public static process: any = {
env: {
NODE_ENV: ‘development’
}
}
}

app.component.ts

import { Component } from ‘@angular/core’;
import{ GlobalConstants } from ‘./common/global-constants’;

@Component({
selector: ‘app-root’,
templateUrl: ‘./app.component.html’,
styleUrls: [‘./app.component.scss’]
})
export class AppComponent {
title = ‘Título Genial’;
process = GlobalConstants.process;
}

Fragmento relevante de utils/util.js (línea 106-116)

var debugs = {};
var debugEnvRegex = /^$/;

if (process.env.NODE_DEBUG) {
var debugEnv = process.env.NODE_DEBUG;
debugEnv = debugEnv.replace(/[|\{}()[]^$+?.]/g, ‘\$&’)
.replace(/*/g, ‘.*’)
.replace(/,/g, ‘$|^’)
.toUpperCase();
debugEnvRegex = new RegExp(‘^’ + debugEnv + ‘$’, ‘i’);
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error se debe a que la variable process no está definida en el entorno del lado del cliente, ya que es una variable del lado del servidor. Una solución que se ha sugerido es agregar una declaración de variable global para process en el archivo webpack.config.js, lo cual ya ha hecho.

    Otra solución que se ha sugerido es declarar una variable global para process en su AppComponent de Angular y luego utilizarla en el archivo .js del proyecto de dependencia. Sin embargo, parece que este enfoque no funcionó para usted.

    También ha mencionado que ha intentado actualizar directamente el proyecto de dependencia, pero los cambios no se están distribuyendo en la salida de compilación de webpack. Esto podría ser porque el proyecto de dependencia no se está empaquetando correctamente por webpack, o porque webpack no está recogiendo los cambios que ha hecho en los archivos del proyecto de dependencia.

    Sin información o código adicional, es difícil proporcionar una solución definitiva a su problema. Sin embargo, algunos posibles pasos que podría tomar son:

    • Verifique que haya configurado correctamente su configuración de webpack para incluir la declaración de variable global process.
    • Intente depurar el problema agregando declaraciones console.log en su código para ver dónde está ocurriendo el error y qué valores se están utilizando para las variables.
    • Considere usar una dependencia o biblioteca diferente que no dependa de la variable process, como último recurso.

    En general, parece que el problema con process no definido es común cuando se trabaja con web3js y entornos del lado del cliente, y que hay varios enfoques que se pueden tomar para resolverlo.

Comments are closed.