【发布时间】:2018-07-31 07:27:59
【问题描述】:
我有一个非常简单的 Webpack + TypeScript 设置,并且正在尝试导入 svgs。我正在使用svg-sprite-loader,如果我require() 我的svg 如下所示,它会很好地工作:
require('./assets/alert.svg')
--
但是,我更喜欢使用以下内容:
import alert from './assets/alert.svg'
这样,我得到以下错误:
TS2307: Cannot find module './assets/alert.svg'.
我的项目根目录中有一个custom.d.ts 文件(阅读后:https://webpack.js.org/guides/typescript/#importing-other-assets)。它看起来像这样:
declare module '*.svg' {
const content: any;
export default content;
}
我的tsconfig 看起来像:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"lib": ["es6", "dom"]
},
"exclude": [
"**/*.spec.ts"
]
}
最后,我的 webpack 设置包括:
module: {
rules: [
{
test: /\.ts$/,
use: `awesome-typescript-loader`
},
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader'
}
]
}
我试图了解custom.d.ts 文件是如何发挥作用的。我的tsconfig有什么需要补充的吗?
另外,对于版本,我正在使用:
- Webpack @ 2.5.0
- TypeScript @ 2.4.0
- svg-sprite-loader @ 3.6.2
- 很棒的打字稿加载器 @ 3.1.2
【问题讨论】:
-
您的
custom.d.ts中还有其他内容吗? -
不,就是这样!
-
似乎这个设置应该可以工作。添加
custom.d.ts后出现什么编译或webpack 错误? -
TS2307: Cannot find module './assets/alert.svg'(来自具有导入语句的文件) -
如果你直接运行
tsc或者只通过 webpack 运行,你会明白吗?
标签: javascript typescript webpack