图片有绝对路径 - 如何在 Laravel Mix 中使用子目录 URL
Images have absolute path - How to use a subdirectory URL in LaravelMix
我的 Laravel Mix 应用程序将放置在服务器上的子目录中,例如:http://localhost/pat-os-server/public/
我的 vue 组件中的图像路径编译自
<img id="logo" src="../assets/img/pat_logo.png">
到
<img id="logo" src="/images/pat_logo.png">
由于应用程序所在的子目录,现在图像未显示。正确的路径应该是 images/pat_logo.png(相对-首选)或/pat-os-server/public/images/pat_logo.png(绝对值)
我试过像这样在 webpack.mix.js 中设置输出路径:
mix.setPublicPath('/pat-os-server/public/');
mix.setResourceRoot('/pat-os-server/public/');
但这并没有改变输出路径。还是/images/pat_logo.png。我希望它现在是 /pat-os-server/public/images/pat_logo.png .为 setPublicPath 和 setResourceRoot 使用其他值(包括“/”和“”)不会造成任何差异。
我在调用其他方法之前放置了路径设置方法,所以我当前的 webpack.mix.js 看起来像这样:
const { mix } = require('laravel-mix');
mix.setPublicPath('/pat-os-server/public/');
mix.setResourceRoot('/pat-os-server/public/');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
如何获取图像的相对输出路径或更改绝对路径?
感谢您的支持。
编辑
我刚刚意识到,在我的 laravel 项目中创建了一个子文件夹 "pat-os-server",并且所有已编译的项目文件都复制到该子文件夹中。所以我似乎误解了 setPublicPath 设置。
我不想将输出文件放到另一个文件夹中。我希望我的项目中的 URL 指向正确的路径,它不是 host/root 而是一个子目录。
经过几个小时的搜索和试用后回答我自己的问题。
现在我的 webpack.mix.js 看起来像这样:
const { mix } = require('laravel-mix');
mix
.setResourceRoot("")
.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
这将导致漂亮的相对 URL:
<img id="logo" src="images/pat_logo.png">
更多示例
使用mix.setResourceRoot("/")
获取根目录的绝对路径(应该是默认的):
<img id="logo" src="/images/pat_logo.png">
或使用其他类似 mix.setResourceRoot("anything/there/")
:
<img id="logo" src="anything/there/images/pat_logo.png">
干杯
我的 Laravel Mix 应用程序将放置在服务器上的子目录中,例如:http://localhost/pat-os-server/public/
我的 vue 组件中的图像路径编译自
<img id="logo" src="../assets/img/pat_logo.png">
到
<img id="logo" src="/images/pat_logo.png">
由于应用程序所在的子目录,现在图像未显示。正确的路径应该是 images/pat_logo.png(相对-首选)或/pat-os-server/public/images/pat_logo.png(绝对值)
我试过像这样在 webpack.mix.js 中设置输出路径:
mix.setPublicPath('/pat-os-server/public/');
mix.setResourceRoot('/pat-os-server/public/');
但这并没有改变输出路径。还是/images/pat_logo.png。我希望它现在是 /pat-os-server/public/images/pat_logo.png .为 setPublicPath 和 setResourceRoot 使用其他值(包括“/”和“”)不会造成任何差异。
我在调用其他方法之前放置了路径设置方法,所以我当前的 webpack.mix.js 看起来像这样:
const { mix } = require('laravel-mix');
mix.setPublicPath('/pat-os-server/public/');
mix.setResourceRoot('/pat-os-server/public/');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
如何获取图像的相对输出路径或更改绝对路径?
感谢您的支持。
编辑
我刚刚意识到,在我的 laravel 项目中创建了一个子文件夹 "pat-os-server",并且所有已编译的项目文件都复制到该子文件夹中。所以我似乎误解了 setPublicPath 设置。
我不想将输出文件放到另一个文件夹中。我希望我的项目中的 URL 指向正确的路径,它不是 host/root 而是一个子目录。
经过几个小时的搜索和试用后回答我自己的问题。
现在我的 webpack.mix.js 看起来像这样:
const { mix } = require('laravel-mix');
mix
.setResourceRoot("")
.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
这将导致漂亮的相对 URL:
<img id="logo" src="images/pat_logo.png">
更多示例
使用mix.setResourceRoot("/")
获取根目录的绝对路径(应该是默认的):
<img id="logo" src="/images/pat_logo.png">
或使用其他类似 mix.setResourceRoot("anything/there/")
:
<img id="logo" src="anything/there/images/pat_logo.png">
干杯