Create React AppしたReactでWebAssemblyをインポートした
Webpackはwasmファイルの扱い方を知らないため、そのままwasmファイルをインポートすると、エラーが発生する。
コマンド
npm install --save-dev react-app-rewired wasm-loader
config-overrides.js
というファイルを作成し、下記を記述。
const path = require('path'); module.exports = function override(config, env) { const wasmExtensionRegExp = /\.wasm$/; config.resolve.extensions.push('.wasm'); config.module.rules.forEach(rule => { (rule.oneOf || []).forEach(oneOf => { if (oneOf.loader && oneOf.loader.indexOf('file-loader') >= 0) { oneOf.exclude.push(wasmExtensionRegExp); } }); }); config.module.rules.push({ test: wasmExtensionRegExp, include: path.resolve(__dirname, 'src'), use: [{ loader: require.resolve('wasm-loader'), options: {} }] }); return config; };
package.json
を変更する。
"scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test", "eject": "react-scripts eject" },