electron 使用esbuild加载SVG文件

gr8qqesn  于 2023-09-28  发布在  Electron
关注(0)|答案(3)|浏览(218)

我使用电子与typescriptReact,并使用esbuild捆绑。
项目文件树:

projectname/
┣ assets/
┃ ┣ index.d.ts
┃ ┗ logo.svg
┣ src/
┃ ┣ components/
┃ ┃ ┗ Intro.tsx
┃ ┣ App.tsx
┃ ┣ electron.ts
┃ ┣ fonts.css
┃ ┣ index.css
┃ ┣ index.html
┃ ┗ index.tsx
┣ .gitignore
┣ build.js
┣ LICENSE
┣ package.json
┣ README.md
┗ yarn.lock

我尝试使用esbuild-plugin-svg,但出现了这个错误。
未能找到模块“website.js”的声明文件。'd:/genius0412/github/checkaccess/node_modules/esbuild-plugin-svg/src/index.js'隐式地具有'any'类型。尝试npm i --save-dev @types/esbuild-plugin-svg(如果存在)或添加包含declare module 'esbuild-plugin-svg'; ts的新声明(.d.ts)文件(7016)
另外,我尝试使用esbuild-plugin-svgj,但它也不起作用。
错误:无法解析“react”(插件“svgj”没有设置解析目录)
我该如何解决这个问题?

ymzxtsji

ymzxtsji1#

这就是我的工作:
我加

declare module '*.svg' {
    const content: string;
    export default content;
}

项目的declaration.d.ts文件。
然后在build.cjs中,我添加了一个SVG文件的加载器:

build({
  ...
  loader: {'.svg': 'text'},
  ...
});
ie3xauqp

ie3xauqp2#

'.svg': 'text'没有为我工作,这是:

build({
    ...
    loader: {
      '.png': 'dataurl',
      '.svg': 'dataurl'
    },
    ...
  })

我在.tsx中使用svg图像如下:

import mySvgLogo from '~/assets/my-svg-logo.svg'
  <img src={mySvgLogo}></img>
bfrts1fy

bfrts1fy3#

这是一个类型脚本问题-它不知道导入的类型是:

import logo from '../assets/logo.svg';

我看到你尝试用index.d.ts添加类型。由于您的索引文件是.tsx,我会尝试在index.tsx中手动导入index.t.ts-在某些时候,我有一个印象,TS自动导入d.ts.js文件,但不是.ts

相关问题