gpt4 book ai didi

javascript - 使用 firebase 函数的共享模块和 typescript 别名

转载 作者:行者123 更新时间:2023-12-04 11:40:50 25 4
gpt4 key购买 nike

我无法让我的共享 typescript 库使用带有 Firebase 函数的别名路径工作。

如果我使用相对路径引用它,代码会编译,但我的 functions/目录上传到 Firebase 函数,并且不能使用其目录之外的相关文件。

目录结构

functions/
- tsconfig.json
- src/*.ts
- lib/*.js

shared/
- tsconfig.json
- src/*.ts
- lib/*.ts

src/
- components/*.vue

tsconfig.json
tsconfig-base.json

在我的函数文件中,我尝试引用我的一个共享模块,如下所示:

import { MyClass } from '@shared/src/MyClass'; // Error: Cannot find module '@shared/src/MyClass'

import { MyClass } from '../../shared/src/MyClass' // This Compiles, but fails deploying Cloud Functions

因为 Cloud Functions 需要在 functions 中具有所有依赖项目录,我无法部署这些功能,即使它全部使用相对路径编译。

我的设置、结构或部署有什么问题?

我也试过添加 "@shared": "file:../shared"functions/package.json如所述 here

tsconfig-base.json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"sourceMap": true,
"strict": true,
"declaration": true,
"declarationMap": true,
"lib": [
"es2018"
],
"target": "es2018",
"types": [
"node"
]
},
"compileOnSave": true,
"files": [],
"include": [],
"exclude": [
"lib",
"node_modules"
]
}

共享/tsconfig.json
{
"extends": "../tsconfig-base.json",
"compilerOptions": {
"composite": true,
"baseUrl": "./",
"outDir": "./lib",
"rootDir": "./src",
},
"compileOnSave": true,
"include": [
"src"
],
"references": [],
"exclude": [
"lib",
"node_modules"
]
}

函数/tsconfig.json
{
"extends": "../tsconfig-base.json",
"references": [
{
"path": "../shared"
}
],
"compilerOptions": {
"baseUrl": "./",
"outDir": "./lib",
"rootDir": "./src",
"paths": {
"@shared/*": [
"../shared/*"
]
}
},
"compileOnSave": true,
"include": [
"src"
],
"exclude": [
"lib",
"node_modules"
]
}

最佳答案

对于任何感兴趣的人,我目前的解决方法是使用 webpack(或 vue.config.js 在我的情况下)将共享文件复制到 functions目录,并添加functions/shared给我的.gitignore .
不是最好的方法,但它有效。

关于javascript - 使用 firebase 函数的共享模块和 typescript 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com