https://dev.classmethod.jp/articles/bigquery-javascript-udf/
$ nodenv install -l
$ nodenv install 21.6.1
$ node --version
v21.6.1
$ npm init --yes
$ npm install "@google-cloud/storage"
$ npm install -D webpack webpack-cli
$ npm install $(npm run-script build | grep "install" | sort | uniq | awk -F"'" '{print $2}')
$ npm run-script build | grep "add a fallback" | sed -E 's/^.+\{(.+) \}.+$/\1,/' | sort | uniq
$ cat webpack.config.js
var path = require('path');
module.exports = {
target: 'node',
entry: './node_modules/@google-cloud/storage/build/esm/src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'google_cloud_storage.js',
library: 'google_cloud_storage',
libraryTarget: 'var',
},
mode: 'production',
resolve: {
fallback: {
"fs": false,
"net": false,
"tls": false,
"child_process": false,
"url": false,
"util": false,
"assert": false,
"buffer": false,
"crypto": require.resolve("crypto-browserify"),
"http": require.resolve("stream-http"),
"https": require.resolve("https-browserify"),
"os": require.resolve("os-browserify/browser"),
"path": require.resolve("path-browserify"),
"querystring": require.resolve("querystring-es3"),
"stream": require.resolve("stream-browserify"),
"zlib": require.resolve("browserify-zlib"),
}
}
};
$ gsutil mb 'gs://hogehoge-bqudf-lib'
$ gsutil cp dist/google_cloud_storage.js gs://hogehoge-bqudf-lib/
結局うまく動かせず。UDF のコードはライブラリ含めて 1M 上限のため実行できない。