从云存储加载的BigQuery表在typescript中不工作



我从一个简单的NodeJS脚本加载数据位于云存储CSV没有问题,使用RunJS:

const bucketName = 'xxxx';
const filename = 'datasets/soa/soa.csv';
const datasetId = 'lbl';
const tableId = 'soa';
const metadata = { ... }
const [job] = await bigqueryClient
.dataset(datasetId)
.table(tableId)
.load(storage.bucket(bucketName).file(filename), metadata);
console.log(`Job ${job.id} completed.`);

一切正常。但是当我在后端项目中使用Typescript实现相同的代码时,它总是会抛出错误:

Source必须是File对象

我试过所有我知道的。这是我的Typescript代码:

import { BigQuery } from "@google-cloud/bigquery";
import { Storage } from "@google-cloud/storage";
loadData() {
const bucketName = 'xxxx';
const filename = 'datasets/soa/soa.csv';
const datasetId = 'lbl';
const tableId = 'soa';
const metadata = { ... }
return this.client
.dataset(datasetId)
.table(tableId)
.load(this.storage.bucket(bucketName).file(filename), metadata);
}

任何想法?

我终于找到了解决办法。这是一个网络包问题。Webpack正在重命名所有的类名,所以我使用TerserPlugin这样:

const TerserPlugin = require("terser-webpack-plugin");

module.exports = {
// context: __dirname,
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
keep_classnames: true,
keep_fnames: true
}
})
]
},
...

现在所有的类名都没有重命名,并且工作得很好。

最新更新