【问题标题】:Vite manifest not found after changing outDir in vite.config.js在 vite.config.js 中更改 outDir 后找不到 Vite 清单
【发布时间】:2022-12-09 08:25:56
【问题描述】:

当我将 outDir: "public" 更改为 laravel 9.41 时,抛出错误。

在以下位置找不到 Vite 清单: E:\oblia\obilia_site\public\build/manifest.json

为什么我改成 public 的时候 Vite 还在 build 目录里找 manifest?该应用程序在我运行npm run dev 时运行良好,但是当停止开发并运行npm run build 时,我收到此错误。我希望我的所有资产都公开,而不是公开/构建。

vite.config.js

import { defineConfig } from "vite";
import { viteStaticCopy } from "vite-plugin-static-copy";
import laravel from "laravel-vite-plugin";

export default defineConfig({
  base: "/",
  build: {
    outDir: "public",
    emptyOutDir: false,
  },

  plugins: [
    laravel({
      input: [
        "resources/css/bootstrap.min.css",
        "resources/css/font-awesome.min.css",
        "resources/css/feather.css",
        "resources/css/owl.carousel.min.css",
        "resources/css/magnific-popup.min.css",
        "resources/css/lc_lightbox.css",
        "resources/css/bootstrap-select.min.css",
        "resources/css/dataTables.bootstrap5.min.css",
        "resources/css/select.bootstrap5.min.css",
        "resources/css/dropzone.css",
        "resources/css/scrollbar.css",
        "resources/css/datepicker.css",
        "resources/css/flaticon.css",
        "resources/css/notiflix.min.css",
        "resources/css/style.scss",
        "resources/css/override.scss",
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        "resources/js/jquery-3.6.0.min.js",
        "resources/js/popper.min.js",
        "resources/js/bootstrap.min.js",
        "resources/js/magnific-popup.min.js",
        "resources/js/waypoints.min.js",
        "resources/js/counterup.min.js",
        "resources/js/waypoints-sticky.min.js",
        "resources/js/isotope.pkgd.min.js",
        "resources/js/imagesloaded.pkgd.min.js",
        "resources/js/owl.carousel.min.js",
        "resources/js/theia-sticky-sidebar.js",
        "resources/js/lc_lightbox.lite.js",
        "resources/js/bootstrap-select.min.js",
        "resources/js/dropzone.js",
        "resources/js/jquery.scrollbar.js",
        "resources/js/bootstrap-datepicker.js",
        "resources/js/jquery.dataTables.min.js",
        "resources/js/dataTables.bootstrap5.min.js",
        "resources/js/anm.js",
        "resources/js/notiflix.min.js",
        "resources/js/bootstrap-slider.min.js",
        "resources/js/chart.js",
        "resources/js/custom.js",
        "resources/js/app.js",
        "resources/js/init.js",
      ],
      refresh: true,
    }),
    viteStaticCopy({
      targets: [
        { src: "resources/images", dest: "" },
        { src: "resources/fonts", dest: "" },
        { src: "resources/files", dest: "" },
      ],
    }),
  ],
});

我不习惯Vite。

【问题讨论】:

  • 在错误中它说“Vite manifest not found at: E:\oblia\obilia_site\public\build/manifest.json”。请注意,除了“manifest.json”之前的那个,它们都是反斜杠“\”。你应该使用反斜杠作为基础。{"base": "\"}}
  • 如果这能解决问题,请告诉我。如果是这样,我会将其发布为答案
  • 它不应该在“公共/构建”目录中查找,因为我将其更改为“公共”。反斜杠和正斜杠不是这里的问题。

标签: javascript laravel vite


【解决方案1】:

您还需要在 Laravel 端配置 outDir。

在深入挖掘源代码后,我找到了Illuminate/Foundation/Vite::useBuildDirectoryhttps://github.com/laravel/framework/blob/6939c04d81abdbed300aba08208fcf88b37e3889/src/Illuminate/Foundation/Vite.php#L192 这可能是您在配置新构建目录时遗漏的内容。

清单预计位于public_path($buildDirectory.'/'.$this->manifestFilename);$buildDirectory默认为build$this->manifestFilename默认为manifest.json。这就是你的E:obliaobilia_sitepublicuild/manifest.json 的由来,E:obliaobilia_sitepublic 是你的(默认)公共路径。

如果将 $buildDirectory 配置为“.”一切都应该解决。 您可以在Laravel documentation 的 Vite 高级定制下找到如何完成这些事情的示例。

以下代码应该可以解决问题,而不是主模板中的 @vite 指令

{{ Vite::useBuildDirectory('.') }}

【讨论】:

    猜你喜欢
    • 2022-08-09
    • 1970-01-01
    • 2022-10-05
    • 2021-05-29
    • 2022-08-19
    • 2023-01-18
    • 2022-08-02
    • 1970-01-01
    • 2022-12-23
    相关资源
    最近更新 更多