【问题标题】:Grunt watch throws a sync:dev not found error with Sails.js in KubernetesGrunt watch 在 Kubernetes 中使用 Sails.js 引发 sync:dev not found 错误
【发布时间】:2018-11-13 22:32:53
【问题描述】:

我使用 Minikube 来模拟我的 Kubernetes 生产架构。 在集群中,我需要创建一个网站,我决定使用 Sails.js。

这是我的 Kubernetes 配置:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: white-label-storage-persistent-volume
  labels:
    type: local
    app: white-label
    role: master
    tier: backend
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteMany
  hostPath:
    path: "/white-label-data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: white-label-storage-persistent-volume-claim
  labels:
    app: white-label
    role: master
    tier: backend
spec:
  storageClassName: manual
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: white-label-deployment
  labels:
    app: white-label
    role: master
    tier: backend
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
  selector:
    matchLabels:
      app: white-label
      role: master
      tier: backend
  template:
    metadata:
      labels:
        app: white-label
        role: master
        tier: backend
    spec:
      containers:
      - name: white-label
        image: pastel-white-label:v1
        imagePullPolicy: IfNotPresent
        workingDir: "/usr/src/app"
        resources:
          requests:
            memory: 2Gi
            cpu: 1
          limits:
            memory: 4Gi
            cpu: 2
        ports:
        - containerPort: 1337
          protocol: TCP
        volumeMounts:
        - mountPath: "/data"
          name: white-label-persistent-volume
      volumes:
        - name: white-label-persistent-volume
          persistentVolumeClaim:
            claimName: white-label-storage-persistent-volume-claim
---
apiVersion: v1
kind: Service
metadata:
  name: white-label-service
  labels:
    app: white-label
    role: master
    tier: backend
spec:
  type: LoadBalancer
  ports:
  - port: 1337
    protocol: TCP
    nodePort: 30003
  selector:
    app: white-label
    role: master
    tier: backend
  sessionAffinity: None
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: white-label-hpa
  labels:
    app: white-label
    role: master
    tier: backend
  namespace: default
spec:
  maxReplicas: 5
  minReplicas: 1
  scaleTargetRef:
    apiVersion: extensions/v1
    kind: Deployment
    name: white-label-deployment
  targetCPUUtilizationPercentage: 80

这是 pastel-white-label:v1 Docker 映像:

FROM node:10.13.0-stretch

WORKDIR /usr/src/app
COPY . ./

RUN npm install -g sails npm-check-updates
RUN npm install @sailshq/connect-redis --save
RUN npm install

CMD ["sails", "lift"]

当我启动集群并构建我的 pod 时,一切都像一个魅力。 我的 Sails.js 日志一尘不染,我可以在浏览器中看到主页:完全没有问题。我在开箱即用的 Web 应用程序模式下使用 Sails.js v1.1.0。我也可以看到 Grunt 已启动并正在观看。

现在如果我编辑一个 .less 文件,我会得到一个不友好的:

debug: -------------------------------------------------------
error: ** Grunt :: An error occurred. **
error: 
------------------------------------------------------------------------

Aborted due to warnings.
Running "watch" task
Waiting...
>> File "assets/styles/styleguide/colors.less" changed.
Loading "sync.js" tasks...ERROR
>> TypeError: Cannot read property 'length' of undefined
Warning: Task "sync:dev" not found.

我确信我的 .less 文件没有错误(hexa 代码版本),我的 .tmp 文件夹是可写的(例如 touch .tmp/foo 正在工作),并且我相信 Grunt 开箱即用时已正确安装...

那我真的不知道这里是怎么回事……

请问各位有什么想法吗?

谢谢你

【问题讨论】:

  • 你怎么知道你的.tmp文件夹在你的pod中是可写的?你在 ssh-ing 到你的 pod 吗?
  • 我确实 ssh => kubectl exec -it white-label-deployment-- -- /bin/bash

标签: kubernetes gruntjs sails.js minikube


【解决方案1】:

我认为您恰好遇到了this。看起来它特定于节点版本。您可以为您的节点 docker 映像尝试早期版本:

FROM node:8.12.0-stretch

【讨论】:

  • 我看到了那个帖子,但没有尝试。我马上就这样做了,我让你知道。这是我发现的唯一一篇关于 sync:dev 问题的帖子,所以我希望这能解决问题!
  • 它成功了!通过将节点版本回滚到 8.12,它现在回到了正轨,Grunt 是一只快乐的兔子!但问题是 8.12 不再是 Node 的 LTS 版本,所以我刚刚公开了我的网站……但现在可以了。奇怪的是,虽然我的 package.json 显示它有效:“engines”:{“node”:>=10.13”}
  • 顺便说一句,我尝试了“FROM node:latest”,但我仍然遇到问题,所以我猜这是 Node 10+ 的问题。
  • 是的,最新的还是有这个问题。我对这个问题添加了评论。如果回答好,你能接受吗?
  • 感谢您发布此内容,我遇到了同样的问题。
【解决方案2】:

正如你在 docker 文件中所说的

FROM 节点:10.13.0-stretch

如果你还想使用 node 10.x+ 并避免这个错误,你可以使用这里讨论的方法。很好很简单:)

https://github.com/balderdashy/sails/issues/4513#issuecomment-468389534

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2016-06-14
    相关资源
    最近更新 更多