为什么带有@nuxt/pwa模块的`nuxt generate`总是在Gitlab-CI中生成默认图标?

Why does `nuxt generate` with @nuxt/pwa module generates always default icon in Gitlab-CI?

我有以下问题。我将 nuxt 与 pwa 模块一起使用来生成预渲染的网页。 @nuxt/pwa 图标模块应该为清单生成不同大小的图标。

当我 运行 nuxt generate 在我的笔记本电脑上时,这也有效。

在我的 gitlab-ci 流水线中,生成也在工作,但它总是生成默认的 nuxt 图标

这个图标我不能在我的工作区中所以我猜它在 docker 构建中以某种方式被引用 node_modules.

我正在使用以下 gitlab-ci 作业

build:
  image: node:alpine
  stage: build
  script:
    - npm run generate
  artifacts:
    paths:
      - dist/*
    expire_in: 14 days
  only:
    - master

package.json 看起来像这样:

  "scripts": {
    "generate": "nuxt generate",
    ...
  },
  "dependencies": {
    "@nuxtjs/pwa": "^3.0.0-beta.20",
    "nuxt": "^2.14.0",
    ...
  },
  "devDependencies": {
   ...
  }

我也在 nuxt.conf.js 中尝试了很多不同的设置,因为我猜是图标没有被正确引用。

这是我最后一次尝试

  pwa: {
    icon: {
      source: resolve(__dirname, './client/static/icon.png'),
    },
  },

但是因为是在当地找到的,所以我觉得是对的。

有没有人知道为什么 nuxt generate 在 gitlab-ci 中不起作用?

我遇到了同样的问题,图标在我的本地环境中也没有更新。现在我可以通过添加

来修复它
pwa: {
    icon: {
         fileName: 'app-icon.png',
    },
},

到我的 nuxt.config.js 并相应地更改文件名。但这可能有点老套。

我使用 Netlify 进行部署并清除了那里的缓存,但没有成功。您是否清除了 Gitlab 中的 Runner Cache 然后再次尝试?

问题似乎是位于 /node_modules/.cache/pwa/icon

的旧缓存

如果文件名未更改,Nuxt 不会生成新图标,这就是使用默认图标的原因。特别是如果您的新图标文件是 'icon.png'.

你可以通过三种方式解决这个问题:

  1. 部署前删除 /node_modules/.cache/pwa/icon 的缓存,但这仅适用于 local/dev 环境,因此已过期。

  2. 您可以按照其他评论的建议重命名文件,但每次更改文件时都必须重命名。因此,虽然这可行,但它仍然远非好,即使对于一个 hacky 解决方案也是如此。

  3. 第三种方法是在 yarn/npm 生成脚本中删除该文件夹。这看起来像这样:

generate: 'rm -r /node_modules/.cache/pwa/icon && nuxt generate';

这对我有用,

删除以下内容:

  1. node_modules/.cache
  2. .nuxt
  3. dist(如果生成)

然后执行以下操作:

npm install
npm run generate