使用 React、Typescript 和 Webpack 显示静态图像

2024-04-10

我正在尝试使用 webpack 和 webpack-dev-server 在 React 组件中显示图像,作为项目的一部分。

到目前为止我已经完成了以下步骤:

  • 使用 npm 安装文件加载器
  • 更新了 webpack.config.js 以添加图像文件加载器
  • 将我想要的图像导入到我的组件中
  • 在我的 img 标签中使用了导入

采取这些步骤后,webpack 无法编译并出现“找不到模块”错误:

ERROR in [at-loader] ./src/components/App.tsx:4:26
    TS2307: Cannot find module '../images/kitten-header.jpg'.

我的文件夹结构如下:

/dist
   /images
      kitten-header.jpg
   bundle.js
   bundle.js.map
/node_modules
   (content ignored for brevity)
/src
   /components
      App.tsx
   /images
      kitten-header.jpg
   /styles
      App.less
   index.tsx
index.html
package.json
tsconfig.json
webpack.config.js 

我添加到 webpack.config.js 的新加载器是:

test: /\.(jpe?g|gif|png|svg)$/, loader: "file-loader?name=./images/[name].[ext]"

我已经在 App.tsx 中导入了图像文件,如下所示:

import kittenHeader from '../images/kitten-header.jpg';

...并在 img 标签中使用导入,如下所示:

<img src={ kittenHeader } />

Note:提供了 webpack.config.js 和 App.tsx 的全文,直到我更接近答案并意识到它们不相关(请参阅更新 1)。

我假设我在导入中的相对路径方面犯了一些非常微不足道的错误。正如你可以想象的,我尝试了各种替代方案。

任何人都可以提供一些见解吗?

作为参考,由于我不断遇到与错误版本的 webpack 相关的文章和问题,以下是我的版本:

  • 反应15.5.4
  • 网页包 2.6.1
  • Webpack-开发服务器 2.4.5
  • 打字稿 2.3.2

Update 1: 2017.06.05
So, looking at this SO question https://stackoverflow.com/questions/42793207/webpack-loader-cannot-find-module and this post on Medium https://medium.com/@sapegin/css-modules-with-typescript-and-webpack-6b221ebe5f10, I've been able to identify that the problem lies not with how I've used webpack, but with that fact that I'm using TypeScript. The error is a typescript error caused by the fact that the typescript compiler doesn't know what a .jpg file is.

显然,我需要提供 d.ts 文件或使用 require 语句。

差不多了...


对于常规要求,这就是我在 tsx 文件中使用它的方式:

const logo = require('../assets/logo.png');

...

<img alt='logo' style={{ width: 100 }} src={String(logo)} />

希望这可以帮助。importing 对我也不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 React、Typescript 和 Webpack 显示静态图像 的相关文章

  • 如何将 .env 文件变量传递给 webpack 配置?

    我是 webpack 的新手 几乎完成了所有构建部分 但现在的问题是我想将环境变量从 env 文件传递 到 webpack 配置 以便我可以通过以下方式将该变量传递到我的构建文件webpack DefinePlugin plugin 目前我
  • 将 JavaScript 数组转换为具有属性的数组

    我有一个像这样的数组从服务器返回响应 111 1010 111 1010 1010 我想将其转换为 JavaScript JSON 如下所示 branch 111 branch 1010 branch 111 branch 1010 bra
  • 内容丰富的 api markdown 转换为 HTML

    有没有什么简单的方法可以将 Markdown 文本从 Contentful api 转换为 html 代码以显示在 html 页面上 我尝试过使用 pagedown 和一些类似的技术 但似乎没有一个对我有用 我是 Contentful 的客
  • React Context - Context.Consumer 与 Class.contextType

    我正在学习新引入的 React Context API 但我注意到它在示例中的消耗存在一些不一致 有的还是用原来的上下文 消费者HOC 方法 而有些 包括 React 文档 使用静态类 contextType method 有什么区别以及为
  • 无法处理未捕获的类型错误:无法读取 createRouterReducer 处未定义的属性“位置”

    我在将路由器连接到 rootReducer 时遇到问题 控制台日志 未捕获的类型错误 无法读取未定义的属性 位置 在 createRouterReducer reducer js 005c 9 不知道如何修复它并将路由器连接到减速器 app
  • “React”在定义之前就被使用了

    我正在使用 create react app typescript eslint 应用程序 在构建过程中出现这样的错误 Line 1 8 React was used before it was defined typescript esl
  • 如何使用 NextJS 使用自托管字体face?

    使用 NextJS 的字体 我已经阅读了有关如何在 NextJS 中使用自托管字体的不同主题 我得到了什么 wait compiling 当我这样做时 font face font family montserrat src url myp
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • 使用 npm 安装 JS 包并使用 webpack laravel mix 进行编译

    我是 Laravel 新手 正在关注 Laravel 5 4 的 Laracast 教程我了解了 Laravel mix 以及如何使用 Webpack Laravel Mix 工具编译我们的资源 所以我尝试添加一个 JavaScript 包
  • 在非输入元素上反应 onKeyDown/onKeyUp 事件

    我需要捕获 cmd 按钮向上和向下事件 以便选择是否在 setState 中使用串联 例如 我如何在表元素上获取这些事件 您必须在主体 窗口级别捕获按键 表元素没有输入焦点 因此您无法从表中捕获键 没有输入元素 var cmdDown fa
  • 我应该使用 redux-form 存储而不是组件状态和 Redux 自定义存储吗?

    我相信任何应用程序都应该有一个事实来源 我的应用程序将有 90 多种交易表格和 150 份报告 复杂的数据结构 父级 子级 计算 所以在 React 中我发现了三个令人困惑的存储状态的地方 组件状态 当我们don t想要共享数据 Redux
  • 新部署后,React 应用程序必须清除浏览器缓存

    我们正在使用 Jenkins 管道在 apache 服务器上部署 React 应用程序 当我们部署新代码时 大多数新功能都可以正常工作 但并非所有更改都反映浏览器中的最新内容 用户必须打开隐身窗口或清除缓存才能看到新功能 我见过一些相关的解
  • React - 如何在合成事件回收之前触发preventDefault()?

    我在 React 组件中有以下函数 该函数在单击链接时运行 onClick e name e stopPropagation const doIt await checkSomething if doIt e preventDefault
  • 如何使用 Webpack 将我的 React 网站打包为“生产”?

    我设法使用这个反应热样板 https github com gaearon react hot boilerplate配置脚本来创建和测试一个简单的 React Flux Web 应用程序 现在我有了一个跑步时喜欢的网站npm start
  • 在 Vue SFC 组件中导入 SCSS 文件,无需使用 Webpack 进行重复

    当我尝试访问所有 Vue SFC 中的 scss 文件时 样式会重复 导致大型 css 包和开发工具在样式调试时崩溃 我正在使用 Webpack 4 和 webpack dev server 来构建和运行具有热重载的开发服务 我没有使用 V
  • JSX 中的“导出默认值”有什么作用?

    我想问最后一句的含义和作用 导出默认 HelloWorld 但我找不到任何有关它的教程 hello world jsx import React from react class HelloWorld extends React Compo
  • 无法立即更新状态?

    我有两个功能 第一个功能是我收到所有订单 第二个功能是我收到所有被拒绝的订单 所以在第一个函数中 我根据第二个函数状态更新状态 效果很好 但是当我从 Firebase 控制台删除项目时 尽管我使用on value gt 那么我该如何处理呢
  • 如何为谷歌材料条形图制作动画

    我正在反应项目中绘制反应谷歌条形图 材料图表 并且我正在尝试制作动画 我读过这种图表不支持动画 但我需要这样做 必须有任何方法可以做到这一点 我很难认为新的东西比旧的东西更糟糕 有人知道我该怎么做吗 我尝试了很多不同的方法 但没有任何效果
  • Karma 测试报告运行速度快,但实际上运行速度慢

    最好的解释是a video https youtu be Zwwi01JuPrQ 或参见下面的 gif 您会注意到 Karma 进度报告器报告测试只需要几毫秒 但显然需要相当长的时间 我在推特上提到了这一点 https twitter co
  • ReactJS 无效校验和

    尝试使用 ReactJS 和 Node js 进行服务器端渲染时 我不断收到以下错误 React attempted to use reuse markup in a container but the checksum was inval

随机推荐

  • 处理 Mongoose 中的架构更改

    随着应用程序的发展 更新 迁移 Mongoose 模式的最佳实践 或工具 是什么 有趣的是 MongoDB 的诞生就是为了解决 RDBMS 中的模式问题 您不必迁移任何内容 您所要做的就是在架构定义中设置默认值 如果该字段是必需的 new
  • 如何管理 MySQL Workbench 中的 SQL 选项卡?

    我经常需要的每个项目都有多个 SQL 查询 我的问题是 我的所有项目都需要 Workbench 中相同的 MySQL 连接 所以我一直打开大量的 SQL 选项卡 如下所示 由于选项卡的数量超过了显示器的宽度 因此我必须左右滚动才能找到一些查
  • 无法使用 String#trim 作为 Array#map 的回调

    由于某种原因我无法使用String prototype trim call作为数组方法的回调 例如map or filter 在这种情况下 两个函数的工作原理相同 function trim string return string tri
  • 在 MySQL WorkBench 中打开现有数据库

    I got a DB files that created in My SQL and I want open them in My SQL WorkBench 6 1 The files I got contains FRM MYD MY
  • 查找数组中的最小值和最大值

    所以我试图找到用户输入的数组的最小值和最大值 这是我的代码 public static void main String args int a new int args length for int i 0 i lt args length
  • 匹配两个数据集中的 ID

    我有两组数据 包括前数据和后数据 受访者拥有唯一的 ID 我想创建一个子集 其中仅包含对两项调查做出回应的受访者 数据集示例 pre data lt data frame ID c 1 10 Y sample c yes no 10 rep
  • 有什么好的 CMS 可以与现有的 Java 网站集成(需要良好的 API)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们有一个大型现有网站 用 Java Spring Hibernate JSP 编写 并希望添加一个内容
  • 提交表单时不要包含空参数

    我的控制器上的索引方法如下所示 public ActionResult Index string search string sort int groupId 对于搜索功能 我有以下形式 using Html BeginForm div H
  • jni 和在 java 中使用 c++ new'ed 对象

    我有一个与数据库对话的 C 层 这个 C 层执行一个新的 SomeObject 并将其返回给 java 我什么时候可以安全地通过 clean jni 调用删除 SomeObject 我可以在java返回对象后立即删除还是需要复制该对象然后删
  • Elm 中的数组与列表

    我很惊讶地得知Array and ListElm 中有两种不同的类型 Array http package elm lang org packages elm lang core 4 0 1 Array List http package
  • Android 位图图像大小

    我正在从网络下载图像 并使用图库小部件来显示图像 如果下载的图像很大 我的应用程序会崩溃并显示以下日志 E GraphicsJNI 3378 VM won t let us allocate 5591040 bytes 仅当图像大小达到会使
  • 在 C# 中创建 datagridview 表单

    我是 C 和 Windows 窗体应用程序的新手 现在 我想在表单中创建一个 Datagridview 我想用业务对象的属性填充其行 我按照此 msdn 页面中的示例进行操作 如何 将对象绑定到 Windows 窗体 DataGridVie
  • PHP 在冒号之前的单词上分割字符串

    我有一个看起来像这样的字符串 aaaaa lorem ipsum bb dolor sit amet ccc no pro movet 将字符串拆分为数组并在 PHP 中获得以下结果的最佳方法是什么 array 0 aaaaa lorem
  • 使用 telegram 的 TL 模式语言处理“标志”类型

    我编写了一个 tl 解析器 因此现在可以使用最新的层 53 但我不确定如何处理 标志 类型 它们仅在 tl 文档中提到 但在页面底部没有定义 据我所知 link https core telegram org mtproto TL form
  • 使用 tkinter 在 jupyter 笔记本内部进行 nltk 绘制

    我正在尝试绘制图表 inline of nltk代替jupyter notebook 但出现错误 TclError no display name and no DISPLAY environment variable 我尝试过设置 DIS
  • 删除 CSS 中的正文边距

    我是网络开发新手 在删除正文边距时遇到了问题 There s space between the very top of the browser and logo text And my code is here on jsbin http
  • 如何将逗号分隔值提取到各个行

    这是我的数据框 其中作者列中的值是逗号分隔的字符串 authors book Jim Charles The Greatest Book in the World Jim An OK book Charlotte A book about
  • 将 int(32 位)转换为 char(8 位)

    我有这些定义 int data uartBaseAddress UART DATA REGISTER 4 data coming from UART RX port char message 20 array of 20 chars 现在当
  • 安卓签名问题

    我正在尝试通过以下方式签署 apkthis http www anddev org advanced tutorials f21 signing your apk application for release keytool jarsig
  • 使用 React、Typescript 和 Webpack 显示静态图像

    我正在尝试使用 webpack 和 webpack dev server 在 React 组件中显示图像 作为项目的一部分 到目前为止我已经完成了以下步骤 使用 npm 安装文件加载器 更新了 webpack config js 以添加图像