我按照本教程成功设置了 typescript+webpack(无反应)。一切都很好,直到我将 index.d.ts 文件添加到我的组件文件夹中,我用它来导出我的所有模块,例如:
export * from "./MyClass1";
export * from "./MyClass2";
export * from "./MyClass2";
Run Code Online (Sandbox Code Playgroud)
然后我导入它:
import * as MyLib from "./components";
Run Code Online (Sandbox Code Playgroud)
代码提示和一切在 sublime 编辑器中正常工作。
最初,当我运行它时,我有:
无法解析“文件”或“目录”。/components
所以我在 webpack.config.js 的扩展中添加了 d.ts:
resolve: {
extensions: ["", ".webpack.js", ".web.js", ".ts", ".tsx", ".js", ".d.ts"]
},
Run Code Online (Sandbox Code Playgroud)
现在,当我运行 webpack 时,出现此错误:
Typescript 没有为 [...]\index.d.ts 发出任何输出
我应该如何解决这个问题?
N. *_*sev 13
在这个特定问题中,内容index.d.ts不是定义而是模块,应该已移入index.ts文件。我还遇到了错误“typescript 没有为 index.d.ts 发出输出”,但有有效的声明文件。
它似乎ts-loader试图将.d.ts文件添加到最终包中,但没有发现要添加的内容,因为它们只包含构建期间类型检查所需的声明。
对我来说,工作的解决方案不是将.d.ts文件传递给ts-loader而是传递给一些什么都不做的加载器,例如ignore-loader。我的对应规则webpack.config.js是:
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules|\.d\.ts$/
},
{
test: /\.d\.ts$/,
loader: 'ignore-loader'
},
Run Code Online (Sandbox Code Playgroud)
ts-loader 如果您使用 ES2018,可以稍微不同地配置,其中添加了正则表达式的负向后视:
{
test: /(?<!\.d)\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/
},
//same ignore-loader config here
Run Code Online (Sandbox Code Playgroud)
索引.d.ts
这是一个声明文件。声明文件没有 javascript 发出。
通过将其从 webpack 中排除(例如将其重定向到ignore-loader),确保该.d.ts文件不是所需发射的一部分
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules|\.d\.ts$/
},
{
test: /\.d\.ts$/,
loader: 'ignore-loader'
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12873 次 |
| 最近记录: |