【问题标题】:Webpack production build does not show user uploaded images (they appear in dev instead)Webpack 生产版本不显示用户上传的图像(它们出现在 dev 中)
【发布时间】:2019-12-02 12:40:27
【问题描述】:

问题有这个前提,可能我错了:

  • 运行构建脚本 Webpack 会创建一个新的 dist 文件夹,其中包含 dist 文件
  • 它创建一个资产目录
  • 它用图像填充资产目录 使用像 123af34119.png 这样的新名称,以便它们具有不同的名称 并且可以缓存
  • 它根据 必填页面

当用户替换或插入新上传的图像时,图像不会上传到 dist 文件夹中,所以在我再次构建之前,图像不会更新或显示。

  1. 我应该将上传的图片复制到 dist 文件夹中吗?
  2. 用哪个名字?
  3. 我应该像热重载一样使用“watch”属性吗?
  4. 我应该使用任何特定的上传器吗?

我用谷歌搜索了很多,但没有找到太多。

【问题讨论】:

  • 您是否有理由要将图像构建到源代码中?用户输入可能不应该成为网站本身的一部分。相反,您应该将图像上传到您的服务器,并在请求时从那里提供它。想象一下,如果您允许用户更改页面上的某些文本。与重写 html 相比,创建一个从某个数据库或存储中提取的动态字段不是更有意义吗?
  • html总是一样的,没有重写。它加载的图像恰好是一个独特的图像,比如说 user101.jpg。当用户上传一个新的时,它会替换服务器资产目录中的 user101.jpg,而不是 webpack dist 目录中的。如果我再次构建 webpack,我会看到用户上传的图像已更新。在开发模式下,它会立即更新,没有问题。
  • 我从改变角度看到的唯一解决方案是使用“静态”公用文件夹,但它不会进入 webpack。所以问题是:静态文件夹是唯一的解决方案吗?
  • 您实际上是在尝试重写 html,因为图像 src 正在从一个构建更改为下一个构建。您还需要将新文件内置到 dist 中。它很可能在开发中为您工作,因为您正在进行某种热门的构建。但是,在 prod 中,src 需要更改为新的图像哈希,并且文件需要被哈希并内置到 dist 中。 Webpack 不会动态地这样做;这是一个一次性的构建过程,您应该运行一次,生成您需要的文件,然后进行部署。这就是为什么我建议使字段动态并拉入文件的原因。

标签: webpack nuxt.js


【解决方案1】:

事实证明,我必须让每个用户生成的内容都脱离 webpack 生产构建,在我的情况下命名为“静态”的文件夹中,它就像一个公共文件夹,用户可以上传和替换他们自己的图像或内容。 html 始终引用该文件夹,并且在我的情况下,用户生成的内容始终以相同的方式命名,因此 x.jpg 被替换为新的 x.jpg 而不是 y.jpg。这使得上传的图像在用户上传后立即出现。 感谢 stellr42 的建议和讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-10
    • 2019-03-28
    • 1970-01-01
    • 2020-10-11
    • 2017-01-16
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多