Flutter Web 应用程序和 firebase:无法在模块外部使用 import 语句

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

我想将 firebase 连接到我的 flutter web 应用程序。 我遵循了网络、官方和建议上的所有解决方案。

我的颤振版本:Flutter 2.6.0-12.0.pre.522

我在控制台内总是出现此错误:

Uncaught SyntaxError: Cannot use import statement outside a module

来自 build/web 的 index.html 内的代码: (我的 firebase 版本:9.21.0)

<body>
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-storage.js"></script>
<script>
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';
const firebaseConfig = {
   apiKey: "",
   authDomain: "",
   projectId: "",
   storageBucket: "",
   messagingSenderId: "",
   appId: ""
};
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
</script>

main.dart

import 'package:firebase_core/firebase_core.dart';
Future<void> main() async {
   WidgetsFlutterBinding.ensureInitialized();
   await Firebase.initializeApp();
   runApp(MyApp());
}

firebase文件夹只有一个hosting.(numbers).cache

firebase.json:

{"hosting": {
"public": "build/web",
"ignore": [
"firebase.json",
   "**/.*",
   "**/node_modules/**"
],
"rewrites": [
   {
      "source": "**",
      "destination": "/index.html"
   }
]
}
}

和我的酒吧spec.yaml:

dependencies:
   flutter:
      sdk: flutter
   firebase_core: ^1.8.0
   firebase_auth: ^3.1.4
firebase flutter import module
2个回答
0
投票

我遇到了同样的问题,但我使用以下更新的方法解决了它。 (我用的是最新的包。)
看起来有些脚本标签不再需要了。
https://firebase.flutter.dev/docs/overview
https://firebase.flutter.dev/docs/manual-installation/

配置信息放入

Firebase.initializeApp (options: FirebaseOptions(...)) 

在 dart 代码方面。


0
投票

问题是使用了index.html 中使用的导入语句。而是添加脚本标签

<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>

如链接所示https://firebase.flutter.dev/docs/manual-installation/

© www.soinside.com 2019 - 2024. All rights reserved.