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
相关产品推荐
相关产品推荐

