import React from 'react';
import ReactDOM from 'react-dom';
import {Table, Column, Cell} from 'fixed-data-table';
import Chart from 'chartjs';
import jQuery from 'jquery';
import vis from 'vis';
import babel from 'babel-core';
Das Bundle.js wird in meine Index.html eingefügt. Der Browser gibt dann den Fehler aus:
Uncaught ReferenceError: process is not defined
at Object.measureMethods (bundle.js:1297)
at Object.<anonymous> (bundle.js:530)
at __webpack_require__ (bundle.js:20)
at Object.<anonymous> (bundle.js:288)
at __webpack_require__ (bundle.js:20)
at Object.<anonymous> (bundle.js:158)
at __webpack_require__ (bundle.js:20)
at Object.<anonymous> (bundle.js:110)
at __webpack_require__ (bundle.js:20)
at Object.<anonymous> (bundle.js:90)
Was sollte ich in webpack.config.js ändern, damit dieser Fehler verschwindet?
Für mein Typoskript-Projekt habe ich eine .d.ts-Datei mit folgendem Inhalt hinzugefügt: “declare var process: any;”
– dr11
28. Dezember 2016 um 9:57 Uhr
Kannst du erklären, wie du das hier umsetzen würdest? In der Webpack-Konfiguration..?
– kbl
28. Dezember 2016 um 9:57 Uhr
nicht in der Webpack-Konfiguration. in jeder Datei der obersten Ebene und als global definiert. es verarbeitet von transpiled und als global deklariert. und jetzt kann “process” auf der Vorderseite verwendet werden. mit DefinePlugin von unten
– dr11
28. Dezember 2016 um 11:48 Uhr
Fergie
Aktualisierung Oktober 2020:
Für Webpack 5 können Sie verweisen process/browser aus dem passenden plugins Teil von webpack.config.js
// webpack needs to be explicitly required
const webpack = require('webpack')
module.exports = {
/* ... rest of the config here ... */
plugins: [
// fix "process is not defined" error:
// (do "npm install process" before running the build)
new webpack.ProvidePlugin({
process: 'process/browser',
}),
]
}
Dies gibt mir den Fehler: Module not found: Error: Can't resolve 'process/browser' in '/path/to/my/js'
– um die Welt
30. Oktober 2020 um 15:37 Uhr
Sie müssen “npm install process” ausführen – ich werde meine Antwort aktualisieren
– Fergie
30. Oktober 2020 um 16:02 Uhr
Ah, gotcha, ich konnte es mit einer etwas anderen Methode zum Laufen bringen. Ich werde meine eigene Antwort geben.
– um die Welt
30. Oktober 2020 um 16:41 Uhr
Ich habe NPM installiert und erhalte: ERROR in ./node_modules/async/dist/async.mjs 60:25-32 Module not found: Error: Can't resolve 'process/browser' in 'REDACTED\node_modules\async\dist' Did you mean 'browser.js'?
– Exegese
3. Dezember 2020 um 23:18 Uhr
Es hat für mich funktioniert, obwohl ich nicht verstehe, warum dies erforderlich ist. ich verstehe das process ist ein Node-Ding, das im Browser nicht verfügbar ist, aber ich dachte, Webpack würde unabhängig davon immer im Node-Kontext ausgewertet werden?
PS für Namespace-Umgebungsvariablen überprüfen Sie die Zeilen 10 – 28 auf der oben erwähnten StackBlitz-Seite.
nach viel Mühe funktioniert diese Lösung !! Danke, Mann.
– coderLogs
9. Mai 2021 um 7:44 Uhr
Genau wie coderLogs habe ich eine Weile gekämpft, bevor ich dieses Juwel gefunden habe. Vielen Dank!!!
– Einsamer Ronin
12. Juli 2021 um 19:27 Uhr
Hüten Sie sich vor dieser Methode. Dadurch wird die .env-Datei verwendet, um alle vorhandenen env-Variablen zu überschreiben. Besser anrufen dotenv.config() zuerst, dann das Plugin definieren: 'process.env': JSON.stringify(process.env)
– jackblk
1. Dezember 2021 um 10:41 Uhr
Hallo @jackblk, ich habe die Antwort aktualisiert. Bitte überprüfe es jetzt.
– Aakash
1. Dezember 2021 um 10:52 Uhr
Das backt alle Umgebungsvariablen in Ihren Client-Code, die möglicherweise Dinge enthalten, die Sie wirklich nicht veröffentlichen sollten, und den Build definitiv größer machen, als er sein muss. Deshalb existierende Tools Präfix env vars für den Client – zB CRA verwendet REACT_APP_ und Next verwendet NEXT_PUBLIC_.
– Jonsharpe
24. März um 8:44 Uhr
Sie müssen ein Plugin hinzufügen, um Ihre Umgebung zu definieren (in der Webpack-Konfiguration):
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('development')
})
],
Wo würden Sie dies zur obigen Konfiguration hinzufügen? Wenn ich es unter das “Ziel” setze, erhalte ich “Unresolved type DefinePlugin”.
– kbl
28. Dezember 2016 um 10:11 Uhr
fügen Sie “var webpack = require(‘webpack’);” hinzu oben in Ihrer webpack.config.js-Datei
– Kinza
28. Dezember 2016 um 10:15 Uhr
Ich bekomme den Fehler jetzt nicht. Vielen Dank. Testen, um zu sehen, ob dies das Gesamtproblem gelöst hat 🙂
– kbl
28. Dezember 2016 um 10:16 Uhr
Ich bekomme den obigen Fehler nicht mehr. Aber jetzt bekomme ich stattdessen Uncaught ReferenceError: global is not defined …. Irgendwelche Hinweise dazu? Bin dankbar. Habe es hier geöffnet: stackoverflow.com/questions/41359987/…
– kbl
28. Dezember 2016 um 10:22 Uhr
Ich bin mir nicht sicher, aber ich sehe, du hast eine Lösung gefunden 🙂
– Kinza
28. Dezember 2016 um 12:49 Uhr
Arian Popaljar
So habe ich das gelöst
ReferenceError: Prozess ist nicht definiert
Fehler mit Webpaket 5
npm i --save-dev process
Löschen Sie den Ordner „node_modules“.
Hinzufügen const webpack = require('webpack'); oben in deiner Konfigurationsdatei
Fügen Sie in Ihrer Webpack-Konfigurationsdatei im Plugin-Abschnitt Folgendes hinzu:
Plugins: [
new webpack.ProvidePlugin({
process: 'process/browser',
}),
Also in the webpack add the alias like below:
resolve: {
alias: {
process: "process/browser"
},
Now do npm i
…and when you build your application the error will disappear.
you can read about webpck migration [here]
um die Welt
Webpaket 5 entfernt die Möglichkeit, mithilfe der Notation auf Umgebungsvariablen zuzugreifen process.env.MY_ENV_VAR. Ich hatte das gleiche Problem, weil ich ein bekam Uncaught ReferenceError: process is not defined Fehler in meiner Browserkonsole. Aus die Dokumentation zur Portierung von v4 auf v5 von Webpackerwähnen sie Folgendes:
Webpack 5 entfernt diese Optionen aus dem Konfigurationsschema und verwendet immer false.
Diese Optionen müssen Sie beim Upgrade Ihrer Konfiguration für Webpack 5 wieder entfernen.
2. Behandlung von Umgebungsvariablen, weil process wurde entfernt
Bezüglich Laufzeitfehler:
process ist nicht definiert.
Webpack 5 enthält kein Polyfill mehr für diese Node.js-Variable. Vermeiden Sie die Verwendung im Frontend-Code.
Möchten Sie die Frontend- und Browsernutzung unterstützen? Verwenden Sie die exports oder imports package.json-Feld, um je nach Umgebung unterschiedlichen Code zu verwenden.
Verwenden Sie auch die browser Feld zur Unterstützung älterer Bundler,.
Alternative: Codeblöcke mit umbrechen typeof process Schecks. Beachten Sie, dass sich dies negativ auf die Bündelgröße auswirkt.
Umgebungsvariablen mit verwenden möchten process.env.VARIABLE? Sie müssen die verwenden DefinePlugin oder EnvironmentPlugin um diese Variablen in der Konfiguration zu definieren.
Erwägen Sie die Verwendung VARIABLE stattdessen und stellen Sie sicher, dass Sie dies überprüfen typeof VARIABLE !== 'undefined' zu. process.env ist Node.js-spezifisch und sollte im Frontend-Code vermieden werden.
Angesichts der obigen Informationen ist es daher möglich, Umgebungsvariablen mit einem der beiden folgenden Plugins zu verwenden.
const webpack = require("webpack");
module.exports = {
...
plugins: [
new webpack.DefinePlugin({
"process.env.MY_ENV_VAR": JSON.stringify(process.env.MY_ENV_VAR)
}),
new webpack.EnvironmentPlugin(['MY_ENV_VAR']); // <--This is shorthand, does the same thing as the DefinePlugin
],
};
Dann ist es in Ihrem Produktionscode immer noch möglich, auf die Umgebungsvariable auf die gleiche Weise zu verweisen, Beispiel:
console.log(process.env.MY_ENV_VAR);
Wie sie jedoch in der oben enthaltenen Dokumentation sagten, wird die Verwendung von process.env ist NICHT der empfohlene Weg, da dies Node.js-spezifisch ist.
Danke für deinen Kommentar. Der Abschnitt Nr. 1 hat mir geholfen, Probleme, die ich mit Webpack 5 hatte, auf Webpack 4 zu replizieren. Dadurch konnte ich genau feststellen, wo das Problem lag.
Danke für deinen Kommentar. Der Abschnitt Nr. 1 hat mir geholfen, Probleme, die ich mit Webpack 5 hatte, auf Webpack 4 zu replizieren. Dadurch konnte ich genau feststellen, wo das Problem lag.
– srigi
22. April um 13:47 Uhr
Jan Pak
Um Fehler wie in der Frage angegeben zu vermeiden, musste ich in webpack.config.js die nächste Konfiguration bereitstellen (beachten Sie die Definition der Variablenebene: process.env):
new webpack.DefinePlugin({
"process.env": JSON.stringify(process.env)
})
Jetzt funktioniert es gut. Ich verwende Webpack 5.30.0, Vue 2.6.12 und Vuelidate 0.7.6.
Fehler, den ich zuvor in der Browserkonsole hatte:
Uncaught ReferenceError: process is not defined
at Object.../node_modules/vuelidate/lib/withParams.js
Es ist nicht gut, dass die Browser-Client-Bibliothek “vuelidate” Node.js-spezifische env-Variablen benötigt. Verwirrte Build- und Laufzeitbereiche in der Bibliothek.
Wenn Sie eine .env-Datei laden müssen, rufen Sie an dotenv.config() Verwenden Sie zuerst diese Antwort. Die Antwort von Aakash überschreibt env var aus der .env-Datei.
– jackblk
1. Dezember 2021 um 10:43 Uhr
10982900cookie-checkWebpack: Bundle.js – Uncaught ReferenceError: Prozess ist nicht definiertyes
Für mein Typoskript-Projekt habe ich eine .d.ts-Datei mit folgendem Inhalt hinzugefügt: “declare var process: any;”
– dr11
28. Dezember 2016 um 9:57 Uhr
Kannst du erklären, wie du das hier umsetzen würdest? In der Webpack-Konfiguration..?
– kbl
28. Dezember 2016 um 9:57 Uhr
nicht in der Webpack-Konfiguration. in jeder Datei der obersten Ebene und als global definiert. es verarbeitet von transpiled und als global deklariert. und jetzt kann “process” auf der Vorderseite verwendet werden. mit DefinePlugin von unten
– dr11
28. Dezember 2016 um 11:48 Uhr