这是一个使用Typescript,React和webpack创建的Web应用程序。我想通过webpack使用svg文件。然而,我得到了
TS2307: Cannot find module '~/images/slide.svg'.
将Typescript文件放在/frontend/src/上,并成功构建typescript文件。
然后,我在网站上尝试了一些解决方案。但我解决不了这个问题。我所尝试的内容简要描述如下。
我添加了一个文件,其中定义的类型在'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上使用'file-loader'来构建svg文件。
请救救我!!
4条答案
按热度按时间aydmsdu91#
如果你使用的是
Nextjs
,你可以创建一个新的文件additional.d.ts
(与next-env.d.ts
相同的级别),并为图像文件声明模块。然后,您应该将此文件包含在tsconfig.json
中。additional.d.ts
:tsconfig.json
:kulphzqa2#
我想这是因为你在Typescript配置中的 include 部分。试试这个:
否则,您只包括在 src 文件夹顶层的键入文件。而且你的 svg 类型文件在一个子级别中,所以Typescript不会包含它。
z8dt9xmd3#
这个被接受的答案引起了我奇怪的行为。例如,如果我引用了一个未定义的变量,我的构建就不会失败。
什么对我起作用:
1.在项目根目录下创建
custom.d.ts
:1.在tsconfig.json的include中添加
custom.d.ts
1.用途:
mwngjboj4#
我最好是这样的: