Estoy desarrollando una extensión del navegador utilizando Webpack V5 e incorporando las bibliotecas Bitcoinjs-Lib y Ecpair para crear una billetera Bitcoin. Sin embargo, me encuentro con un error al intentar cargar el módulo WebAssembly.
Apreciaría enormemente cualquier guía o sugerencia sobre cómo resolver este problema con éxito e instanciar el módulo de WebAssembly en la extensión de mi navegador.
Mensaje de error:
Aquí están los detalles clave de mi configuración:
- Estoy usando Webpack V5 para agrupar la aplicación.
- He incluido las bibliotecas bitcoinjs-lib y Ecpair como dependencias en mi proyecto.
- Se produce un error al intentar importar Tiny-SECP256K1 y también al pasar esa instancia a EcpairFactory.
Mi archivo webpack.config.js:
const path = require("path");
const CopyPlugin = require("copy-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { exec } = require("child_process");
const fs = require("fs");
perform copyFolderSync(from, to) {
  fs.mkdirSync(to, { recursive: true });
  fs.readdirSync(from).forEach((component) => {
    if (component !== "manifest.json") {
      if (fs.lstatSync(path.be a part of(from, component)).isFile()) {
        fs.copyFileSync(path.be a part of(from, component), path.be a part of(to, component));
      } else {
        copyFolderSync(path.be a part of(from, component), path.be a part of(to, component));
      }
    }
  });
}
module.exports = {
  module: {
    guidelines: (
      {
        check: /.scss$/,
        use: ("style-loader", "css-loader", "sass-loader"),
      },
      {
        check: /.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          choices: {
            presets: ("@babel/preset-env", "@babel/preset-react"),
          },
        },
      },
      {
        check: /.wasm$/,
        sort: "webassembly/async", // or "webassembly/sync"
      },
    ),
  },
  experiments: {
    asyncWebAssembly: true,
  },
  resolve: {
    extensions: (".js", ".jsx"),
    fallback: {
      buffer: require.resolve("buffer"),
      stream: require.resolve("stream-browserify"),
    },
  },
  entry: {
    background: "./app/background.js",
    popup: "./app/popup.js",
  },
  output: {
    path: path.resolve(__dirname, "dist/chrome"),
    filename: "(title).js",
  },
  plugins: (
    new HtmlWebpackPlugin({
      template: "./app/popup.html",
      filename: "popup.html",
      chunks: ("popup"),
    }),
    new CopyPlugin({
      patterns: (
        {
          from: "app",
          to: "",
          globOptions: {
            ignore: (
              "**/background.js",
              "**/popup.js",
              "**/popup.html",
              "**/build-types",
              "**/manifest",
            ),
          },
        },
        {
          from: "ui",
          to: "ui",
        },
      ),
    }),
    {
      apply: (compiler) => {
        compiler.hooks.afterEmit.faucet("AfterEmitPlugin", (compilation) => {
          // Run the JavaScript file after the compilation is finished
          exec("node improvement/construct/index.js", (error, stdout, stderr) => {
            if (error) {
              console.error(`exec error: ${error}`);
              return;
            }
            // Copy recordsdata from the temp folder to different folders
            fs.readdirSync(path.resolve(__dirname, "dist")).forEach((dest) => {
              copyFolderSync("dist/chrome", `dist/${dest}`);
            });
          });
        });
      },
    },
  ),
};
 
 




 
 














