javascript - Vue.js 组件中的 Img 元素未渲染到 Laravel 生产环境中

标签 javascript php html laravel vue.js

我正在使用 resources/images 目录中的 npm run prod 编译用于生产的 img 元素。编译是通过webpack.mix.js完成的:

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .postCss('resources/css/app.css', 'public/css').vue();

welcome.blade.php 底部:

<body id="body">
  <div id="app">
    <app></app>
  </div>
</body>
<script src="{{ mix('js/app.js') }}"></script>
</html>

img 元素位于vue 组件内:

  <img :src="require('../images/portrait.png')" id="portrait" alt="">

并被编译到public/images目录:

enter image description here

如您所见,portrait.png 被编译为 public/images。但是,一旦我尝试使用 php artisanserve 运行应用程序,图像就不会显示在浏览器中。这是唯一未显示的图像。浏览器控制台显示:

Failed to load resource: the server responded with a status of 404 (Not Found)

在初始页面加载时:

GET http://127.0.0.1:8000/require(%60../images/portrait.png%60) 404 (Not Found)

页面刷新。

根据这个img src thread on github require 应该适用于 img 元素,但事实并非如此。有什么解决办法吗?

规范:

OS: Windows 10
Vue.js: 4.5.13
Laravel: 8.55.0

最佳答案

将图像解析为模块似乎存在问题。您可以尝试将 .default 添加到 require 语句中吗?例如

<img :src="require('../images/portrait.png').default" id="portrait" alt="">

引用:https://github.com/JeffreyWay/laravel-mix/issues/2756

关于javascript - Vue.js 组件中的 Img 元素未渲染到 Laravel 生产环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68948516/

相关文章:

javascript - 如何在表格单元格中插入弹出窗口?

javascript - 测试选择元素与 Jest 的 react

javascript - 具有双向数据绑定(bind)的嵌套 ngFor Angular2

html - 纯CSS表格样式

php - MAMP 找不到文件夹

javascript - 将图像添加到 TinyMCE 编辑器

php - WooCommerce 条件自定义字段(如果购物车中的产品类别)

php - Laravel 5.2 中 Select 语句中的子查询

php - 非阻塞命名管道

javascript - 限制多选菜单中显示的字符