TypeError: firestoreService. net.initializeApp不是一个函数



我正在尝试编写一个TS脚本,该脚本将采用JSON文件并将其导入Firebase集合作为文档。我受到这个使用firestore-import-export包的教程的启发。然而,即使我已经安装了这个包,我也无法初始化它。我的scripts/test_import_data.ts脚本看起来像这样:

const firestoreService = require('firestore-export-import');
const serviceAccount = require(__dirname + '/../serviceAccountStaging.json');
const firebaseConfig = require(__dirname + '/../config.js');
async function main() {
await firestoreService.initializeApp(serviceAccount, firebaseConfig.databaseURL);
}
main()
.then(() => {
process.exit(0)
})
.catch((error) => {
console.error(error)
process.exit(1)
})

我的package.json是这样的:

{
...
"engines": {
"node": "~v16.14.2",
"npm": "~8.5.0"
},
"scripts": {
"script": "ts-node"
},
"devDependencies": {
"@types/yargs": "^17.0.10",
"dotenv": "^16.0.0",
"firestore-export-import": "^1.1.0",
"ts-node": "^10.7.0",
"typescript": "^4.6.4",
"yargs": "^17.4.1"
}
}
在终端中,我像这样运行脚本,并出现以下错误:
my@mac % npm run script scripts/test_import_data.ts
TypeError: firestoreService.initializeApp is not a function
at main (/Users/mymac/projects/my-project/scripts/test_import_data.ts:6:26)
at Object.<anonymous> (/Users/mymac/projects/my-project/scripts/test_import_data.ts:9:1)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Module.m._compile (/Users/mymac/projects/my-project/node_modules/ts-node/src/index.ts:1455:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Object.require.extensions.<computed> [as .ts] (/Users/mymac/projects/my-project/node_modules/ts-node/src/index.ts:1458:12)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at phase4 (/Users/mymac/projects/my-project/node_modules/ts-node/src/bin.ts:567:12)
在Google/StackOverflow研究之后,我现在迷路了。你遇到过类似的问题吗?你知道我做错了什么吗?任何帮助都是感激的!♥️

看起来你可能使用的是在Firebase sdk模块化之前的npm库的旧API。仔细查看一下你所链接到的npm文档。示例代码如下所示:

const { initializeFirebaseApp } = require('firestore-export-import')
initializeFirebaseApp(serviceAccount, appName, options)

注意initializeFirebaseApp函数是直接导入的。没有"服务"。对象导出来调用。

最新更新