我有一个打字的Firebase功能项目.在这个项目中,我使用带有子路径导入的项目外部的类型,其结果是构建文件是不正确的.

我不是main:lib/index.js,而是main:lib/functions/src/index.js

functions/lib:

petertoth@Peters-MBP-2 lib % tree .
.
├── functions
│   └── src
│       ├── index.js
│       ├── index.js.map
│       ├── journalLogs.type.js
│       ├── journalLogs.type.js.map
│       └── util
│           ├── audiFiles.js
│           ├── audiFiles.js.map
│           ├── db.js
│           ├── db.js.map
│           ├── getJournalSettings.js
│           ├── getJournalSettings.js.map
│           ├── prompt.js
│           ├── prompt.js.map
│           ├── storage.js
│           └── storage.js.map
└── types
    ├── firebase
    │   ├── CreateFullRecording.request.js
    │   ├── CreateFullRecording.request.js.map
    │   ├── generateJournal.requests.js
    │   └── generateJournal.requests.js.map
    ├── firestore
    │   ├── JournalSettingsDoc.js
    │   └── JournalSettingsDoc.js.map
    └── openai
        ├── language.js
        └── language.js.map

Package.json:

{
  "name": "functions",
 ...
 "imports": {
    "#types/*": ["../types/*"]
  },
  "engines": {
    "node": "16"
  },
  "main": "lib/functions/src/index.js",
  "private": true
  ...
}

发帖主题:Re:Kolibrios

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "target": "es2017",
    "moduleResolution": "nodenext",
    "paths": {
      "#types/*": ["../types/*"]
    }
  },
  "baseUrl": ".",
  "compileOnSave": true,
  "include": [
    "src"
  ]
}

这在当地效果很好,我可以很好地服务它.但是,当我try 部署时: firebase deploy --only functions我收到以下错误:

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run build

> build
> tsc

✔  functions: Finished running predeploy script.
i  functions: preparing codebase default for deployment
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
i  artifactregistry: ensuring required API artifactregistry.googleapis.com is enabled...
✔  functions: required API cloudfunctions.googleapis.com is enabled
✔  artifactregistry: required API artifactregistry.googleapis.com is enabled
✔  functions: required API cloudbuild.googleapis.com is enabled
i  functions: preparing ./functions/ directory for uploading...
i  functions: packaged XX (98.13 KB) for uploading
✔  functions: ./functions/ folder uploaded successfully
i  functions: updating Node.js 16 function generateJournal(europe-west1)...
i  functions: updating Node.js 16 function migrageJournal(europe-west1)...
i  functions: updating Node.js 16 function getCollectionNames(europe-west1)...
i  functions: updating Node.js 16 function createFullRecording(europe-west1)...
Build failed: > build
> tsc

src/index.ts(22,44): error TS2307: Cannot find module '#types/firebase/CreateFullRecording.request' or its corresponding type declarations.
src/index.ts(25,40): error TS2307: Cannot find module '#types/firebase/generateJournal.requests' or its corresponding type declarations.
src/util/getJournalSettings.ts(1,36): error TS2307: Cannot find module '#types/firestore/JournalSettingsDoc' or its corresponding type declarations.
src/util/prompt.ts(1,36): error TS2307: Cannot find module '#types/firestore/JournalSettingsDoc' or its corresponding type declarations.
src/util/prompt.ts(2,30): error TS2307: Cannot find module '#types/openai/language' or its corresponding type declarations.
src/util/prompt.ts(15,31): error TS18046: 'journalBullet' is of type 'unknown'.
src/util/prompt.ts(16,34): error TS18046: 'journalBullet' is of type 'unknown'.
src/util/prompt.ts(48,10): error TS7053: Element implicitly has an 'any' type because expression of type 'LanguageCode' can't be used to index type '{ en: string; da: string; sv: string; no: string; de: string; }'.; Error ID: 1a2262f3

我认为要上传的文件的打包配置有问题.不过,这只是我的直觉,我不知道如何更多地调试它.

推荐答案

Update your Firebase CLI:npm install -g firebase-tools

谷歌云功能现在运行npm run build during deployment,这似乎是导致问题的原因.

然而,根据this comment by colerogers,Firebase团队修补了他们的CLI,以禁用Firebase-Tools v11.27.0中的这一功能.

如果您至少升级到该版本,则不需要任何额外工作即可消除此错误.

Node.js相关问答推荐

使用Vite和ReactJS时,在哪里设置NODE_OPTIONS?

我的位置也移动时左右拖动谷歌 map

需要关于基于角色授权的设计建议

Sequelize-测试使用虚拟场更新模型

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

我收到警告:发现函数rs-ms-v1不受支持的运行时nodejs18.x× 不受支持的运行时

PEAN auth 应用程序:为什么 Angular 拦截器总是使用BehaviorSubject 返回 null(即初始值),而不是更新后的值?

npm install 在 Mac 上的 Node-gyp 构建错误

对 google api v3 的 Axios 请求返回加密(?)数据

在将用作 nodejs/expressjs 中的中间件的函数中使用 keycloak.protect()

BrowserRouter工作时为什么HashRouter不工作?

用户与mongoose 的完美搭配

[NodeJs 从 ADAL 升级到 MSAL]:无法在字符串上创建属性authenticationScheme

多个 Axios 请求合并

cURL 和 shell 任务

在Go中,编写非阻塞代码有意义吗?

如何在 node 中转义 shell 命令的字符串?

为什么我会收到错误:解决方法指定过多?

要求('babel/register')不起作用

Google Firebase 错误(函数返回未定义、预期的 Promise 或值)