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’);
}
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 paraprocess
en el archivowebpack.config.js
, lo cual ya ha hecho.Otra solución que se ha sugerido es declarar una variable global para
process
en suAppComponent
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:
process
.console.log
en su código para ver dónde está ocurriendo el error y qué valores se están utilizando para las variables.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.