nginx Flutter Web应用程序抛出错误“Uncaught ReferenceError:_flutter未定义”,但它在某些浏览器/配置文件上有效

cnwbcb6i  于 2023-05-16  发布在  Nginx
关注(0)|答案(1)|浏览(428)

类似于我看到的其他一些错误...我在我的域上的浏览器上加载我的Flutter(release)Web应用程序时,在浏览器上遇到此控制台错误
Uncaught ReferenceError: _flutter is not defined
奇怪的是,这个错误并没有出现在我的Chrome浏览器配置文件和Firefox(非私人窗口)上。
在其他浏览器上,我在加载Web应用程序时会出现白色。
此外,在应用程序加载的浏览器上,页面的源代码明显包括一个flutter.js文件x1c 0d1x
但在另一个窗口中,它没有加载,这是源选项卡

我通过kubernetes上的nginx服务器托管我的flutter web应用程序,这是我的Dockerfile

#Stage 1 - Install dependencies and build the app in a build environment
FROM debian:latest AS build-env

# Install flutter dependencies
RUN apt-get update
RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3 sed
RUN apt-get clean

# Clone the flutter repo
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter

# Set flutter path
ENV PATH="${PATH}:/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin"

# Run flutter doctor and enable web
RUN flutter doctor
RUN flutter channel stable
RUN flutter upgrade
RUN flutter config --enable-web

# Copy files to container and build
RUN mkdir /app/
COPY . /app/
WORKDIR /app/

RUN flutter clean && flutter pub get && flutter build web

# Stage 2 - Create the run-time image
FROM nginx:1.21.1-alpine
COPY --from=build-env /app/build/web /usr/share/nginx/html

当我执行到我的flutter-web-app pod并导航到/usr/share/nginx/html文件夹时,我确实看到了我希望看到的内容!

想知道我在这里做错了什么!一直在处理这个问题几天了,现在似乎没有什么我已经尝试似乎解决它!开放给任何想法!
提前感谢:)

qvk1mo1f

qvk1mo1f1#

我发现了我的错误...留下这篇文章,以防其他人也有同样的经历。
所以这个问题是双重的。它在一个浏览器配置文件上工作,因为数据已经缓存。然而,它不是在任何其他浏览器上,所以空白屏幕确实是预期的行为。
主要问题是由于错误的Ingress配置,该配置仅在/Exact路径上匹配
当flutter试图在my.domain.name/flutter.js获取静态文件flutter.js时-它遇到了404,这是由我的入口默认后端带来的。
解决方案是将我的Ingress规则spec改为在/app上进行前缀匹配,以便现在通过路由my.domain.com/app/flutter.js请求资源-不再遇到404 -这解决了我面临的最初问题。
TLDR -确保您的入口规则规范不是太严格!

相关问题