Angular 6 无法从资产加载图像

Angular 6 Failing To Load Images From Assets

出于某种原因,我无法在我的应用程序中显示我的图片。 这是错误,测试和 class:

The error: GET http://localhost:4200/assets/image.png 404 (Not Found)

<img class="logo" src="../../assets/image.png">
<img class="logo" src="../assets/image.png">
<img class="logo" src="assets/image.png">
//None of these work

.logo {
    height: 100px;
    width: auto;
    padding: 10px;
    display: block;
    margin: 0 auto;
}

知道为什么这不起作用吗?我的 image.png 在我的资产文件夹中,该文件夹位于 src/assets/image.png.

更新:

所以我们做了一个测试。我们将所有节点模块和项目文件复制到另一台电脑上,并在那里正确加载了图像。所以我认为问题出在 angular 项目之外。

src="assets/image.png" 应该可以正常工作。添加图像后是否重新启动构建?

<img class="logo" src="assets/image.png">

这是正确的路径,可能是其他地方出错了。

检查图像名称或它的 jpeg。 也许您在资产文件夹中添加了一个新文件夹? ,如果是这样的话代码应该是这样的

<img class="logo" src="assets/image/image.png">

试试这个 <img class="logo" src="./assets/image.png">

也右键单击您的图片并检查扩展名是否为 PNG 而不是 png,如果是则写 image.PNG

试试这个:

<div class="logo"></div>

.logo {
    height: 100px;
    width: auto;
    padding: 10px;
    display: block;
    margin: 0 auto;
    background:url('assets/image.png') no-repeat center center;
}

所以问题是 angular 项目位于导致错误的位置。在我的例子中,它位于一个 bitbucket 存储库中。我不确定这是否是错误的原因。

尝试将整个 angular 项目移动到其他位置。这为我解决了:)

@Rak2018 的解决方案是一个很好的解决方法,如果您想改用它的话

这是因为您没有访问文件的权限。

windows中的简单方法 将您的项目从驱动器 C: 移动到其他驱动器。它工作正常。

祝你好运。

我也遇到了同样的问题。对我来说是在 assests 目录之前添加一个“/”:

我遇到了同样的问题,结果证明这是路径上区分大小写的问题。

在我的例子中,assets 下的图像文件夹在图像文件夹中是大写的 I。 /assets/Images/angularconnect-shield.png

所以请检查您的图片路径并确保它与完全匹配。

The folder which contains your assets (like pictures) needs to be declared in assets array inside your angular.json

Angular只识别在angular.json中声明的资产或来自网络的资产。

此外,以下所有三个选项都适合您:-

<img class="logo" src="assets/image.png">

按照网络上的其他教程,我创建了一个 src\app\assets\images 文件夹并将图像放在那里。但是,我的应用程序在 src\assets 中已经有一个资产文件夹。对此有两个修复。

或者:

  1. 将我的图像放入现有的 src\assets 文件夹中并引用为 <img src="src\assets\my-image.png"/>
  2. src\app\assets 添加到我的 angular.json 资产声明和参考中,这是我 src\app\assets\images\my-image.png 的初衷。

将资产文件夹添加到您的 angular.json。

"assets": [
    "src/assets"
 ],

然后参考下面的图片,

<img src="/assets/image.png">

这应该有效。

如果是由于 'ng serve' 托管的 URL 区分大小写,可以选择禁用它。 'ng serve' 使用 webpack-dev-server,它使用 http-proxy-middleware。您可以编写自定义中间件脚本来更正 url 大小写以匹配文件大小写(它只影响服务器响应,浏览器仍会看到原始 url)。

此处发布了如何编码的示例:https://github.com/webpack/webpack-dev-server/issues/578#issuecomment-569121500

如果您使用的是 Angular 的旧版本:,则可能是由于工作区路径中的括号所致。 (我在 Angular 12.2.8 中尝试过,至少在那个版本中已经修复了。)