- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
部署我的应用程序的新版本后在 Docker ,
我看到我的 console
出现以下错误 打破我的申请 :
Uncaught SyntaxError: Unexpected token '<'
10.bbfbcd9d.chunk.js
,该文件的内容如下所示:
(this.webpackJsonp=this.webpackJsonp||[]).push([[10],{1062:function(e,t,n){"use strict";var r=n(182);n.d(t,"a",(function(){return r.a}))},1063:function(e,t,n){var ...{source:Z[De],resizeMode:"cover",style:[Y.fixed,{zIndex:-1}]})))}))}}]);
//# sourceMappingURL=10.859374a0.chunk.js.map
Docker
图片 仅限 包括最新版本的 block Chunks are
.js
file that are produced bywebpack
, see code splitting for more information
.js
,我将发送重新加载信号。文件以通配符路径结束。
Wild card is serving the
index.html
of the web application, this for delegating routing to client-side routing in case of an user refreshing it's page
// Handles any requests that don't match the ones above
app.get('*', (req, res) => {
// prevent old version to download a missing old chunk and force application reload
if (req.url.slice(-3) === '.js') {
return res.send(`window.location.reload(true)`);
}
return res.sendFile(join(__dirname, '../web-build/index.html'));
});
webpack
构建的,就好像它是一个
create-react-app
应用程序,分布式构建目录包含许多
.js
block 文件。
import()
错误并重新加载。您也可以通过修补 __webpack_load_chunk__
来全局执行此操作某处。 <= 我没有得到那个补丁或在哪里使用 import()
,我不是自己制作这些 block ,它只是一个生产功能window.location.reload(true)
对于不存在的 js 文件,但这是一个非常奇怪的 hack。 <= 它使我的应用程序在 chrome android 上循环重新加载 .js
发送 HTML请求,即使它们不存在,这只会导致奇怪的错误 <= 那不能解决我的问题 最佳答案
如果我正确理解了这个问题,那么有几种方法可以解决这个问题,我将从最简单的到更复杂的列出它们:
使用以前的版本来构建新版本
这是迄今为止最简单的方法,只需要为您的新版本更改基本镜像。
考虑以下 Dockerfile
构建应用程序的版本 2:
FROM version1
RUN ...
docker build -t version2 .
Dockerfile
正是这样做的:
FROM alpine
RUN mkdir -p /app/latest && touch /app/latest/$(cat /proc/sys/kernel/random/uuid).chunk.js
latest
的目录中- 这对建议的方法很重要!
Dockerfile.next
看起来像这样:
FROM version2 AS previous
RUN rm -rf /app/previous && mv /app/latest/ /app/previous
FROM alpine
COPY --from=previous /app /app
RUN mkdir -p /app/latest && touch /app/latest/$(cat /proc/sys/kernel/random/uuid).chunk.js
previous
来轮换版本。版本和移动
latest
进入
previous
.
latest
。 .
docker build -t image:1 -f Dockerfile .
>> /app/latest/99cfc0e6-3773-40a0-82d4-8c8643cc243b.chunk.js
docker build -t image:2 --build-arg PREVIOUS_VERSION=1 -f Dockerfile.next .
>> /app/previous/99cfc0e6-3773-40a0-82d4-8c8643cc243b.chunk.js
>> /app/latest/2adf34c3-c50c-446b-9e85-29fb32011463.chunk.js
docker build -t image:3 --build-arg PREVIOUS_VERSION=2 -f Dockerfile.next
>> /app/previous/2adf34c3-c50c-446b-9e85-29fb32011463.chunk.js
>> /app/latest/2e1f8aea-36bb-4b9a-ba48-db88c175cd6b.chunk.js
docker build -t image:4 --build-arg PREVIOUS_VERSION=3 -f Dockerfile.next
>> /app/previous/2e1f8aea-36bb-4b9a-ba48-db88c175cd6b.chunk.js
>> /app/latest/851dbbf2-1126-4a44-a734-d5e20ce05d86.chunk.js
latest
移动的至
previous
.
ENTRYPOINT
中完成Docker 本身或您的服务器代码中的脚本 - 这完全取决于您,取决于更方便的方式。
RUN rm -rf /app/version-0; \
[ -d /app/version-1 ] && mv /app/version-1 /app/version-0; \
[ -d /app/version-2 ] && mv /app/version-2 /app/version-1; \
mv /app/latest /app/version-2;
ARG
与要保留的版本数。
关于javascript - 如何处理使用代码拆分的 Docker webpack 应用程序的新版本部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61479698/
我以使用文件库的方式实现。 然后我有以下代码: 更新根:一个HtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: self title. a
这里有一个问题要问我的父亲。从 Excel 5 到现在他使用 Excel 2002,他在 Excel 中使用 VBA 已经有二十多年了。 由于他在Excel中使用VBA很长时间,并且广泛使用记录宏的功
我正在编写一个程序来在本地备份我的 Google 相册库,上周代码运行良好,但在过去的几天里,我反复从 API 客户端收到错误消息,说“photoslibrary v1”不存在在 Google 的 A
谁能建议如何解决这两个问题? - 无法升级 Jenkins 和 SVN 插件 - 无法连接到 svn 我正在 Windows 64 位机器上设置 Jenkins。它被配置为作为 Windows 服务运
这个问题已经有答案了: Trouble with UTF-8 characters; what I see is not what I stored (5 个回答) 已关闭 6 年前。 它在我的旧服务
我无法在 Chrome 新版本中打开弹出窗口。我单击打开模式对话框弹出窗口的链接,但弹出窗口没有出现。我猜测这是 google chrome 新版本的问题。 function DownloadRepo
我试图找到一种方法来结合“NewReleases”ResponseGroup 和关键字搜索。 我正在使用 PHP Soap Library . 我知道它不再维护,因为这里是 new version ,
我在谷歌分析中创建了新帐户 并发现它有新的用户界面:没有 View ,无法添加目标。如何添加? 最佳答案 刚刚打开 的切换事件 在转换报告中将其标记为 转换 : 关于google-analytics
我从 Codecanyon 购买(许可)了一些不在 GIT 中维护的代码。我现在对它做了很多更改(使用 GIT)。很快原始代码的作者将发布一个新版本。我会想在不丢失我自己的情况下 merge 他们的更
首先,我指的是这个问题( LINK ),它对我没有帮助,因为当时框架的版本较低,所以我开始新问题。 所以我正在使用 Grails 2.4.3 框架并尝试在其中使用 Drools 规则引擎。Java版本
这个问题已经有答案了: Firefox Web Console Disabled? (4 个回答) 已关闭 9 年前。 我在 Mac OSX 上运行 Firefox 28.0,并尝试使用控制台和 Fi
我遇到了有关应用内购买的问题。我之前通过应用内购买启动了我的应用程序 v1.0。现在我通过应用内购买上传了 v1.1。该应用程序显示“等待审核”状态。但是In-App purchase还是显示“Wai
我们都知道 - 这是列出我们最喜欢的软件的每个新版本带来的变化的阅读。每当它捆绑为文件(Changes.txt、CHANGES、WhatsNew.txt 等)或出现在安装程序中时,这通常是我们在安装/
我想将 hibernate-3.5-1.Final 与此插件一起使用,这里我的依赖项应该是什么。它似乎正在拿起一组较旧的 jar ,但现在失败了。
我注意到昨天发布了OpenCV的新版本v2.3。 我无法使用cmake以及编译Linux和Unix源代码的基本说明在Mac中安装此版本。 我在执行make指令时获得了以下错误消息: /Users/jo
我正在将 POI jar 从旧版本升级到新版本 ( 3.10.1 )。我在构建文件中看到 poi-contrib.jar 位于类路径上,并且版本为 2.5.1-final-20040804。(我不确定
前一段时间我创建了this帖子,我和我的同事找到了两个不同的答案(都有效): 第一个解决方案是使用 Intent callIntent = new Intent (“android.intent.ac
起初集群中的所有代理都可以正常启动和工作,但有时其中一个代理会遇到问题。并且会出现一些现象: 整个集群挂了,生产者和消费者也不工作,因此网络流量从监视器降为零; 使用kafka-topic.sh描述t
在 Chrome 更新之前,我的代码运行良好。 我对我的服务器进行了 ajax 调用。我的服务器收到调用,将 JSON 返回给客户端,但答案始终为空。当我查看 Fiddler 时,我从服务器得到了答案
我从事一个项目已有 1 年,并定期进行重要更新。上次在 3 天前,我存档并生成了一个 IPA,但在加载屏幕后,应用程序崩溃了。但是当我运行该应用程序时,它工作正常,一切都像以前一样工作。 检查下面的链
我是一名优秀的程序员,十分优秀!