جافاسكريبت - TS2307: لا يمكن العثور على الوحدة './images/logo.png'
أنا أحاول استيراد صورة PNG محلية إلى مشروع TypeScript باستخدام 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
الإجابة رقم 1
لقد وجدت الإجابة هنا. استيراد الصور في 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'
الإجابة رقم 2
كان خطأي أنني استبعدت مرجع react-app-env.d.ts:
/* eslint-disable spaced-comment */
/// <reference types="react-scripts" />
لقد دفعني Eslint للقيام بذلك بسبب قاعدة التعليقات المفرَّقة.
آمل أن يساعد هذا شخصًا ما.
