javascript - TS2307:找不到模块“./images/logo.png”
问题描述
我正在尝试将本地 png 图像导入到我的 ts webpack 项目中,但出现以下错误。
TS2307: Cannot find module './images/logo.png'.
我所有其他模块都可以正常导入,即;我的 css、svg 和 ts 文件。它似乎只发生在 png 上。
我的 webpack.config.js 模块部分
module: {
rules: [{
test: /\.ts$/,
use:['ts-loader']
},{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},{
test: /\.(woff|woff2|eot|ttf|svg)$/,
use: ['url-loader?limit=100000']
},{
test: /\.png$/,
use: ['file-loader']
}]
}
我的 tsconfig.json
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"module": "CommonJS",
"target": "ES5",
"lib": ["DOM", "ES2015.Promise", "ES5"],
"allowJs": true,
"alwaysStrict": true
}
}
我的进口声明
import Logo from './images/logo.png';
我的文件结构
root
-src
--css
--images
---logo.png
--index.ts
--templates.ts
-package.json
-tsconfig.json
-webpack.config.js
解决方案
我在这里找到了答案。Webpack & Typescript 图片导入
这就是我所做的。
添加了一个新目录和一个 import-png.d.ts 文件
root
-typings
--custom
---import-png.d.ts
导入-png.d.ts
declare module "*.png" {
const value: any;
export default value;
}
将我的文件加载器模块更改为:
{
test: /\.(png|jpe?g|gif|jp2|webp)$/,
loader: 'file-loader',
options: {
name: 'images/[name].[ext]'
}
现在我可以用这样的语句导入:
import Logo from './images/logo.png'
推荐阅读
- java - OneToMany 和 ManyToOne 实体对象以递归方式链接
- vba - MSAccess 登录表单
- reactjs - timerset.addEventListener 不是函数吗?
- c++ - 在 C++ 中从“getline”更改为“get”会导致错误
- ios - Xcode:命令行错误错误:没有这样的模块'XCTest'
- android - 最终可观察到的热流?
- jenkins - 无需多次声明即可重用代理
- string - 仅突出显示字符串中的一个单词
- reactjs - React 将子组件数据发送到父组件和 POST 请求
- python - search_field 不能接受来自用户模型的查询