【问题标题】:Cannot import from public folder in CSS Create React App无法从 CSS Create React App 中的公用文件夹导入
【发布时间】:2021-04-14 20:08:42
【问题描述】:

在使用 Create React App 引导的项目中,在我的 public 文件夹中,我有一个 assets 文件夹,其中包含文件 logo512.jpg

当我在这样的组件中引用文件时

<div>
    <img src='/assets/logo512.jpg'/>
</div>

我一切正常。但是,当我在 CSS 文件中为同一个组件引用同一个文件时,如下所示:

background {
    background-image: url('assets/logo512.jpg');
}

然后报错Can't resolve '/assets/logo512.jpg' in DIRECTORY_OF_COMPONENT/assets/logo512.jpg

请注意,DIRECTORY_OF_COMPONENT 不是公用文件夹,而是 CSS 文件所在的文件夹。如何使 url 引用公用文件夹?

以下是完整代码以及我的文件结构:

// HomePage.js

import React from 'react';
import 'tachyons';
import './HomePage.css';

function HomePage() {
    return (
        <div className="background tc">
            <div>
                <img src='/assets/logo512.jpg'/> //this works 
            </div>
        </div>
    );
}

export default HomePage;



// HomePage.css
.background {
    height: 100%;
    display: flex;
    align-content: center;
    justify-content: center;
    background: url('/assets/logo512.jpg'); //this does not work
}

【问题讨论】:

  • 你可以试试我的回答,我已经详细提到了如何做到这一点:) 如果你仍然有问题我想检查你的文件夹结构

标签: javascript css reactjs create-react-app


【解决方案1】:

更新:

案例 1:

如果您的图像在公共文件夹中。如果您在 public 文件夹中使用 assets 文件夹,那么代码应该可以工作。

三个案例的 Codesandbox 演示: https://codesandbox.io/s/images-not-loaded-hkzq1

案例 2:

如果您想使用public 文件夹以外的图像,您需要先将图像导入您的 React 项目。 (确保路径和您的图像正确)。

import MyImage from "./assets/logo512.jpg"

然后在src属性中使用。

<img src={MyImage}/>

案例3:使用CSS在块级元素上设置图片时:

.background  {
  height:200px; /* Make sure height of the div is given for image to be within*/
  background-image: url("assets/logo512.jpg");
}

这应该可以正常工作(前提是您的相对路径在 CSS 文件中是正确的)

注意:使用SVG Images,React 提出了一种基于组件的方式,我们通过使用ReactComponent 导入我们的svg 作为组件。

import { ReactComponent as Logo } from './logo.svg';

return(<Logo/>)

【讨论】:

  • 我的问题是我有案例3(公共/资产中的图像和css中的url),但错误仍然存​​在。
  • 我的代码(我相信 - 除非我遗漏了什么)与您演示的案例 3 相同
  • 让我检查一下您的代码中是否缺少任何内容 :)
  • 一个原因:您需要先设置 div 的高度 :) 检查这个 可能是这个问题。在案例 3 中更新了我的答案
  • 如果您对此有任何帮助,请投票并接受我的回答 :) stackoverflow.com/help/someone-answers 这将帮助其他开发人员解决同样的问题,因为我已尝试包含所有可能性:) 在我的回答中
猜你喜欢
  • 1970-01-01
  • 2018-06-06
  • 2018-12-18
  • 2021-02-10
  • 2018-07-28
  • 2021-02-27
  • 2021-06-29
  • 2019-03-25
  • 2018-11-26
相关资源
最近更新 更多