firebase 服务在启动前不编译打字稿代码

问题描述 投票:0回答:1

我有一个非常简单的 typescript firebase 函数项目...代码可以工作并且非常简单,但是项目配置中有一些错误导致

firebase serve
在启动服务器之前无法重新编译代码。同时
firebase deploy
工作完美

该项目位于

firebase
-.firebaserc
-firebase.json
-functions
--package.json
--tsconfig.json
--src
---...all the code goes here
--built
---...code after compiled goes here

这是firebase.json的内容

{
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ],
      "predeploy": "npm --prefix functions run build" 
    }
  ]
}

这是package.json的内容

{
  "name": "functions",
  "scripts": {
    "build": "tsc",
    "build:watch": "tsc --watch",
    "clean-build": "for /D %i in (built\\*) do @rd /s /q \"%i\" & del /q built\\*.*",
    "serve": "npm run clean-build && npm run build && firebase emulators:start --only functions",
    "shell": "npm run clean-build && npm run build && firebase functions:shell",
    "start": "npm run clean-build && npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "20"
  },
  "main": "built/index.js",
  "dependencies": {
    "axios": "^1.6.8",
    "firebase-admin": "^11.8.0",
    "firebase-functions": "^4.9.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^3.1.0",
    "typescript": "^4.9.0"
  },
  "private": true
}

如果我在函数文件夹内并运行

npm run serve
,它会按预期工作 但是如果我运行 firebaseserve...它只会使用当前编译的代码启动网络服务器,任何修改都不会反映出来,如果代码尚未编译,它将无法启动

我可以做什么来解决这个问题?

typescript firebase npm google-cloud-functions
1个回答
0
投票

它按预期工作。

firebase serve
不会对您的代码运行任何类型的编译或预处理。它只是使用现有的内容(也许是您之前编译的 JavaScript)。

npm run serve
之所以能够如你所愿,是因为你的
serve
脚本有一个明确的指令来编译你的TS:

"serve": "npm run clean-build && npm run build && firebase emulators:start --only functions",

脚本的

npm run build
部分在运行模拟器之前进行编译。

如果您希望在

firebase serve
之前使用单个命令运行编译步骤,也许您可以为此创建一个新脚本。如:

"firebase-serve": "npm run clean-build && npm run build && firebase serve",
© www.soinside.com 2019 - 2024. All rights reserved.