登录  /  注册
使用React和TypeScript,从静态目录中加载png和svg文件的路径
P粉122932466
P粉122932466 2023-08-30 20:10:18
[React讨论组]
<p>我正在尝试从/static/目录中加载svg和png文件作为路径,以便动态地将它们用作网站图标。</p> <p>我根据文档配置了所有内容:</p> <pre class="brush:php;toolbar:false;">./src/model/view/&lt;SomeView.ts&gt; ./static/&lt;SomeFile.png|svg&gt; ./src/custom.d.ts ./tsconfig.json ./webpack.config.js ./package.json</pre> <p>示例视图 <code>BrowserView.ts</code></p> <pre class="brush:php;toolbar:false;">import FaviconPng from &quot;../../../static/favicon_browser-32x32.png&quot;; import FaviconSvg from &quot;../../../static/favicon-browser.svg&quot;; import { View } from &quot;./View&quot;; export class BrowserView implements View { public readonly faviconPng = FaviconPng; public readonly faviconSvg = FaviconSvg; }</pre> <p>自定义类型声明 <code>custom.d.ts</code></p> <pre class="brush:php;toolbar:false;">declare module &quot;*.svg&quot; { const path: string; export = path; } declare module &quot;*.png&quot; { const path: string; export = path; }</pre> <p><code>tsconfig.json</code></p> <pre class="brush:php;toolbar:false;">{ &quot;compilerOptions&quot; : { &quot;esModuleInterop&quot; : true, &quot;experimentalDecorators&quot; : true, &quot;jsx&quot; : &quot;react&quot;, &quot;moduleResolution&quot; : &quot;node&quot;, &quot;strict&quot; : true, &quot;target&quot; : &quot;ES6&quot; }, &quot;include&quot; : [ &quot;./src/model/view/*&quot;, &quot;./src/custom.d.ts&quot; ] }</pre> <p><code>webpack.config.js</code></p> <pre class="brush:php;toolbar:false;">module.exports = { module: { rules: [ { test: /\.(jpe?g|png|svg)$/, use: &quot;url-loader&quot; } ] } };</pre> <p><code>package.json</code>中包含了<code>webpack</code>和<code>url-loader</code>。</p> <p>但是我仍然遇到了这个错误:</p> <pre class="brush:php;toolbar:false;">ERROR in ./static/favicon_browser-32x32.png 1:0 Module parse failed: Unexpected character '�' (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders (Source code omitted for this binary file) @ ./src/model/view/BrowserView.ts 1:0-68 7:26-36 @ ./src/App.tsx 34:0-69 73:33-51 162:17-40 224:17-40 @ ./src/index.tsx 4:0-32 5:36-41 ERROR in ./static/favicon_browser.svg 1:0 Module parse failed: Unexpected token (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders &gt; &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;svg id=&quot;uuid-00b901b6-ce54-412b-a6b8-3c8e80482087&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 26 32&quot;&gt; &lt;defs&gt; &lt;style&gt;.uuid-80dd75c4-418c-4908-a10c-915b8aaac0d3{ isolation:isolate; fill:black; } @media (prefers-color-scheme: dark) { .uuid-80dd75c4-418c-4908-a10c-915b8aaac0d3{ fill:white; } }&lt;/style&gt; &lt;/defs&gt; &lt;path class=&quot;uuid-80dd75c4-418c-4908-a10c-915b8aaac0d3&quot; d=&quot;m7.52,...&quot; /&gt; &lt;/svg&gt; @ ./src/model/view/BrowserView.ts 2:0-62 8:26-36 @ ./src/App.tsx 34:0-69 73:33-51 162:17-40 224:17-40 @ ./src/index.tsx 4:0-32 5:36-41</pre> <p>我猜测它无法识别加载器配置,但我不确定我可以改变什么。</p><p> 如何从该目录加载图像作为路径来更改网站图标?</p> <pre class="brush:php;toolbar:false;">private updateFavicon(view: View): void { // 通过id标签获取元素 const favicon_svg: HTMLElement = document.getElementById(&quot;favicon_svg&quot;)!; const favicon_png: HTMLElement = document.getElementById(&quot;favicon_png&quot;)!; // 设置图标 favicon_svg.setAttribute(&quot;href&quot;, view.faviconSvg); favicon_png.setAttribute(&quot;href&quot;, view.faviconPng); }</pre></p>
P粉122932466
P粉122932466

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号