はじめに
toio.jsをブラウザで動かしたいと思った時に、参考記事通りに実行してみたのですが、Webpackのバージョンが4から5にバージョンアップしたことで、モジュールのインストールやwebpackの追加設定が必要でした。
その手順をまとめます。
初心者のため、不要な箇所があるかもしれませんが、参考程度に見ていただければ幸いです。
動作環境
Windows11
Node.js:v20.11.0
npm:10.2.4
yarn:1.22.21
webpack:5.90.3
前準備
手順1 package.json作成
作業環境のディレクトリで作成します。
今回はC:\Users\ユーザー名\project
に作成しました。
yarn init -y
手順2 @toio/scannerを追加
toio.jsのパッケージをインストールします。
yarn add @toio/scanner
手順3 webpackインストール
webpackに関するツールを3つインストールします
- webpack
- webpack-cli
- copy-webpack-plugin
npm install -D webpack webpack-cli copy-webpack-plugin
手順4 ファイルを作成
webpack.config.js
ファイルを作業環境のディレクトリに作成します。
参考記事をベースにしましたが、このまま実行するとエラーがでます。
module.exports = {
...
resolve: {
alias: {
// noble-macをnobleにバイパス
'noble-mac': 'noble'
}
},
plugins: [
// ついでにwsも不要なので無効化
new webpack.IgnorePlugin(/^ws$/)
],
...
};
webpack.config.jsを編集
webpack.config.jsの中身については以下の記事を参考にしました。
手順1 utilを追加
npm install util
webpack.config.js
に以下のコードを追加する
fallback: {
util: require.resolve("util/"),
},
以下のページを参考にしました。
手順2 processを追加
prosessをインストール
npm install process
webpack.config.js
に以下のコードを追加する
new webpack.ProvidePlugin({
process: 'process/browser',
}),
以下のページを参考にしました。
手順3 stream-browserifyを追加
npm i stream-browserify
webpack.config.js
に以下のコードを追加する
resolve: {
fallback: {
"stream": require.resolve("stream-browserify"),
}
}
以下のページを参考にしました
手順4 bufferを追加
npm install --save buffer
webpack.config.js
に以下のコードを追加する
resolve: {
...
fallback: {
...
"buffer": require.resolve("buffer")
},
},
plugins: [
...
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),
};
以下のページを参考にしました
ここまでで、追加設定は終了です。
最終的なwebpack.config.js
ファイルは以下のようにしました。
'use strict';
const path = require('path');
const webpack = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
target: 'web',
mode: 'production',
entry: './src/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
},
resolve: {
alias: {
'noble-mac': 'noble'
},
extensions: [ '.ts', '.js' ],
fallback: {
util: require.resolve("util/"),
"stream": require.resolve("stream-browserify"),
"buffer": require.resolve("buffer")
},
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),
new webpack.ProvidePlugin({
process: 'process/browser',
}),
new webpack.IgnorePlugin({ resourceRegExp: /^ws$/ })
],
devtool: 'source-map'
};
手順5 main.jsを編集
Web Bluetoothを動作させるには、クリックイベントを設置する必要があるようです。参考記事からコードを引用しました。
import { NearestScanner } from '@toio/scanner';
document.getElementById('connect').addEventListener('click', async () => {
const cube = await new NearestScanner().start();
await cube.connect();
}
手順6 webpackビルド
以下のコードをコマンドプロンプトで実行すると、「dist」というフォルダができていると思います。
npx webpack
参考文献
この記事は以下の情報を参考にして執筆しました。