1
votes

Erreur de référence non interceptée: global n'est pas défini dans Object ../ node_modules / fbjs / lib / setImmediate.js

J'ai eu cette erreur lorsque j'essaie de rendre Button à partir de la conception de fourmis dans mon projet Electron, et cela ne rend rien à la place. Lorsque je passe du bouton au texte Hello World, cela fonctionne.

Je ne sais pas si l'erreur provient du webpack ou de la conception de la fourmi elle-même.

Remarque: je crée manuellement ce projet moi-même , mais l'erreur peut être reproduite sur https://github.com/Devtography/ electron-react-typescript-webpack-passe-partout mais pas d'erreur sur https: // github .com / Robinfr / electron-react-typescript

Message d'erreur

const path = require("path");
const HtmlWebPackPlugin = require("html-webpack-plugin");

const htmlPlugin = new HtmlWebPackPlugin({
  template: "./src/index.html",
  filename: "./index.html"
});

const config = {
  target: "electron-renderer",
  devtool: "source-map",
  entry: "./src/app/renderer.tsx",
  output: {
    filename: "renderer.js",
    path: path.resolve(__dirname, "dist")
  },
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      },
      {
        test: /\.css$/,
        loaders: ['style-loader', 'css-loader']
      }
    ]
  },
  resolve: {
    extensions: [".ts", ".tsx", ".js"]
  },
  plugins: [htmlPlugin]
};

module.exports = (env, argv) => {
  return config;
};

webpack.config.js

const path = require("path");

const config = {
  target: "electron-main",
  devtool: "source-map",
  entry: "./src/main.ts",
  output: {
    filename: "main.js",
    path: path.resolve(__dirname, "dist")
  },
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      }
    ]
  },
  resolve: {
    extensions: [".ts", ".tsx", ".js"]
  },
  node: {
    __dirname: false,
    __filename: false
  }
};

module.exports = (env, argv) => {
  return config;
};

webpack.react.config.js

Uncaught ReferenceError: global is not defined
    at Object../node_modules/fbjs/lib/setImmediate.js (renderer.js:58171)
    at __webpack_require__ (renderer.js:20)
    at Object../node_modules/draft-js/lib/editOnBeforeInput.js (renderer.js:49367)
    at __webpack_require__ (renderer.js:20)
    at Object../node_modules/draft-js/lib/DraftEditorEditHandler.js (renderer.js:45296)
    at __webpack_require__ (renderer.js:20)
    at Object../node_modules/draft-js/lib/DraftEditor.react.js (renderer.js:44011)
    at __webpack_require__ (renderer.js:20)
    at Object../node_modules/draft-js/lib/Draft.js (renderer.js:43920)
    at __webpack_require__ (renderer.js:20)


1 commentaires

Des solutions de travail?


3 Réponses :


0
votes

Ceci est lié à https://github.com/facebook/fbjs/issues/290 .

Corrigez-le en ajoutant un objet global sur la window:

(window as any).global = window;


0 commentaires

0
votes

J'ai eu le même problème, ce que j'ai fait avant toute exécution de script:

global = globalThis;


0 commentaires

0
votes

Juste pour ajouter un peu de contexte à la réponse fournie, ajoutez ceci dans votre fichier index.html (à l'intérieur des balises):

<script>
  const global = globalThis;
</script>


0 commentaires