导入svg文件时,打字稿找不到模块

它是使用Typescript,React和webpack创建的Web应用程序。我想通过webpack使用svg文件。但是,我得到了

    TS2307: Cannot find module '~/images/slide.svg'. 

将打字稿文件放在/ frontend / src /上,然后成功构建打字稿文件。

然后,我在网站上尝试了一些解决方案。但是我不能解决这个问题。 我尝试的内容简要描述如下。

我添加了一个文件,其中在'typeRoots'中定义了类型。 tsconfig.json

{
  "compilerOptions": {
    "outDir": "./app/assets/javascripts/bundles","sourceMap": true,"allowJs": true,"allowSyntheticDefaultImports": true,"noImplicitAny": true,"noUnusedLocals": true,"noUnusedParameters": true,"moduleResolution": "node","module": "es2015","target": "es6","jsx": "react","removeComments": true,"baseUrl": ".","paths": {
      "~/*": ["./frontend/src/*"]
    },"typeRoots": ["types","node_modules/@types"]
  },"awesomeTypescriptLoaderOptions": {
    "useCache": true,"cacheDirectory": "tmp/build_caches/awesome-typescript-loader"
  },"include": [
    "./frontend/src/*"
  ],"exclude": [
    "node_modules","bundles","**/*.js"
  ]
}

types / images.d.ts

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

我在webpack上使用“文件加载器”来构建svg fild。

请帮助我!

chen477293 回答:导入svg文件时,打字稿找不到模块

我最好像这样:

  "include": ["**/*.ts","**/*.tsx","images.d.ts"],
,

我认为这是因为您在Typescript配置中的 include 部分。 试试这个:

"include": [
  "./frontend/src/*/**"
],

否则,您只包括键入 src 文件夹顶层中的文件。而且您的 svg 键入文件位于子级别中,因此Typescript不会包含该文件。

,

如果您使用 Nextjs,您可以创建一个新文件 additional.d.ts(与 next-env.d.ts 级别相同)并声明图像文件的模块。然后,您应该将此文件包含在您的 tsconfig.json 中。

additional.d.ts

declare module "*.png";
declare module "*.jpg";
declare module "*.jpeg";
declare module "*.svg";
declare module "*.gif";

tsconfig.json

{
  ...
  "include": ["next-env.d.ts","additional.d.ts","**/*.ts","**/*.tsx"],}
本文链接:https://www.f2er.com/3153770.html

大家都在问