У меня возникают проблемы при работе моей общей библиотеки машинописного текста с использованием пути псевдонима с функциями 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
Поскольку облачные функции должны иметь все зависимости в каталоге functions
, я не могу развернуть функции, даже если все они компилируются с использованием относительных путей.
Что я делаю неправильно моя установка, структура или развертывание?
Я также пытался добавить "@shared": "file:../shared"
к functions/package.json
, как описано здесь
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"
]
}
shared / tsconfig. json
{
"extends": "../tsconfig-base.json",
"compilerOptions": {
"composite": true,
"baseUrl": "./",
"outDir": "./lib",
"rootDir": "./src",
},
"compileOnSave": true,
"include": [
"src"
],
"references": [],
"exclude": [
"lib",
"node_modules"
]
}
functions / 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"
]
}