reactjs - Skaffold Kubernetes 不显示 React 更改

标签 reactjs kubernetes nodemon skaffold

问题:

当运行 skaffold 并更新监视的文件时,我看到发生文件同步更新并且 nodemon 重新启动服务器,但刷新页面没有显示更改。直到我完全停止 skaffold 并重新启动后,我才看到变化。

Syncing 1 files for test/dev-client:e9c0a112af09abedcb441j4asdfasfd1cf80f2a9bc80342fd4123f01f32e234cfc18
Watching for changes every 1s...
[client-deployment-656asdf881-m643v client] [nodemon] restarting due to changes...
[client-deployment-656asdf881-m643v client] [nodemon] starting `node bin/server.js`

设置:

我有一个简单的微服务应用程序。它有一个服务器端(flask/python)和一个客户端(react),可以快速处理开发服务器。我有nodemon,旧版监视标志为true(对于Chokidar 轮询)。在开发过程中,我通过 Docker for Mac 使用 Kubernetes。

代码:

我很高兴发布我的代码来提供帮助。只需让我知道哪些是最需要的。

这里有一些入门:

Skaffold.yaml:

apiVersion: skaffold/v1beta7
kind: Config
build:
  local:
    push: false
  artifacts:
    - image: test/dev-client
      docker:
        dockerfile: Dockerfile.dev
      context: ./client
      sync:
        '**/*.css': .
        '**/*.scss': .
        '**/*.js': .
    - image: test/dev-server
      docker:
        dockerfile: Dockerfile.dev
      context: ./server
      sync:
        '**/*.py': .
deploy:
  kubectl:
    manifests:
      - k8s-test/client-ip-service.yaml
      - k8s-test/client-deployment.yaml
      - k8s-test/ingress-service.yaml
      - k8s-test/server-cluster-ip-service.yaml
      - k8s-test/server-deployment.yaml

Package.json 中的相关部分:

 "start": "nodemon -L bin/server.js",

Dockerfile.dev(客户端):

# base image
FROM node:10.8.0-alpine

# setting the working directory 
# may have to run this depending on environment
# RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app

# add '/usr/src/app/node_modules/.bin' to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app depencies
COPY package.json /usr/src/app/package.json
RUN npm install

# copy over everything else
COPY . .

# start the app.
CMD ["npm", "run", "start"]

最佳答案

事实证明我使用了错误的文件同步模式。 **/*.js 无法正确同步目录。

更改后

sync:
        '**/*.css': .
        '**/*.scss': .
        '**/*.js': .

sync:
        '***/*.css': .
        '***/*.scss': .
        '***/*.js': .

它立即开始工作。

<小时/>

更新: 在最新版本的 skaffold 上,此模式不再起作用,因为 skaffold 默认情况下放弃了扁平化。您现在可以使用 **/* 模式并获得相同的结果。

关于reactjs - Skaffold Kubernetes 不显示 React 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55392559/

相关文章:

kubernetes - 如何在kubernetes中将secret标记为可选?

json - Kubernetes:从j2模板动态创建配置json文件

azure - Kubernetes 与 Dynatrace 集成,dynatrace-webhook 抛出错误

nodemon 不监视 tsx 文件中的更改

node.js - 当 Node 崩溃时退出nodemon

根据另一个变量的 JavaScript 动态变量名称

javascript - reactjs 的 jsx 中的 es6 对象扩展运算符

javascript - 在 React.js 中计算选中的复选框

reactjs - "undefined is not an object"this.state 未绑定(bind)

javascript - 部署Node App后如何在Heroku上安装依赖项?