繁体   English   中英

K8s 中的 NextJS Docker 容器抛出未捕获的语法错误:意外的令牌'<'

[英]NextJS Docker Container in K8s Throwing Uncaught SyntaxError: Unexpected token '<'

使用 npx npx create-next-app@latest --ts .

 "next": "12.1.6",
 "react": "18.1.0",
 "react-dom": "18.1.0"

然后将一个简单的 Dockerfile 部署到 kubernetes minikube,然后通过 minikube 隧道访问端口

FROM node:alpine

WORKDIR /app
COPY package.json .
RUN yarn install
COPY . .


CMD ["yarn", "dev"]

在浏览器中运行时在控制台中显示带有以下错误的空白页面

Uncaught SyntaxError: Unexpected token '<'

但是,在非 k8s 中通过 docker docker run运行相同的图像可以正常工作。 我已经按照其他线程中的建议查看了绝对路径的 HTML,并看到路径指向

http://myhost.com/_next/static/chunks/react-refresh.js?ts=1654439747173

悬停在 src 上时

<div id="__next">
<script src="/_next/static/chunks/react-refresh.js?ts=1654439747173"></script>

deployment.yaml 和入口文件

apiVersion: apps/v1
kind: Deployment
metadata:
 name: front-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: front
  template:
    metadata:
      labels:
        app: front
    spec:
      containers:
        - name: front
          imagePullPolicy: Never
          image: mine/front:latest
          resources:
           limits:
            memory: 512Mi
            cpu: "1"
---
apiVersion: v1
kind: Service
metadata:
  name: front-service
spec:
  selector:
    app: front
  ports:
    - name: front
      protocol: TCP
      port: 3000
      targetPort: 3000


// ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - host: myhost.com
      http:
        paths:
          - path: /?(.*)
            pathType: Prefix
            backend:
              service:
                name: front-service
                port:
                  number: 3000

关于让它在 kubernetes 中运行的任何想法?

我通过更新入口重写目标让它工作

改变

nginx.ingress.kubernetes.io/rewrite-target: /$2

nginx.ingress.kubernetes.io/rewrite-target: /$1

和路径

path: /(.*)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM