You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter部署Firebase Host遇index.js模块语法解析错误求助

修复Firebase Functions部署时的ES模块语法错误

以下是针对你遇到的Parsing error: 'import' and 'export' may appear only with 'sourceType: module'错误的修复步骤:

  • 配置Functions目录的package.json
    打开functions/package.json,在顶层添加"type": "module"字段,告诉Node.js该目录下的文件采用ES模块规范:

    {
      "name": "functions",
      "type": "module",
      "scripts": {
        "serve": "firebase emulators:start --only functions",
        "shell": "firebase functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
      },
      "engines": {
        "node": "18"
      },
      "main": "index.js",
      "dependencies": {
        "firebase-admin": "^11.8.0",
        "firebase-functions": "^4.3.1"
      },
      "devDependencies": {
        "eslint": "^8.15.0",
        "eslint-config-google": "^0.14.0"
      }
    }
    
  • 修正ESLint配置的位置与内容
    确保.eslintrc.js文件位于functions目录下(而非项目根目录),并正确设置解析器选项:

    module.exports = {
      env: {
        es2021: true,
        node: true
      },
      extends: [
        "eslint:recommended",
        "google"
      ],
      parserOptions: {
        ecmaVersion: "latest",
        sourceType: "module"
      },
      rules: {
        "no-unused-vars": "warn"
      }
    };
    
  • 验证Node.js版本兼容性
    Firebase Functions要求运行时Node.js版本至少为14.x,推荐使用16.x或18.x。在functions/package.json的engines字段指定版本,并确保本地Node.js版本与之一致。

  • 清理依赖缓存并重新部署
    进入functions目录,清理旧依赖后重新安装,再执行部署:

    cd functions
    rm -rf node_modules package-lock.json
    npm install
    firebase deploy --only functions,hosting
    
  • 备选方案:切换到CommonJS语法
    如果上述方法仍无效,可以将ES模块语法替换为CommonJS:

    // 替换 import 为 require
    const { initializeApp } = require("firebase-admin/app");
    const { getFirestore } = require("firebase-admin/firestore");
    
    // 替换 export 为 module.exports
    exports.yourFunction = functions.https.onRequest((req, res) => {
      // 函数逻辑
    });
    

    同时移除package.json中的"type": "module",并将ESLint配置的sourceType改为"script"。

内容的提问来源于stack exchange,提问作者LostTexan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:15:00