首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让非类型化的npm模块很好地与webpack合作?

如何让非类型化的npm模块很好地与webpack合作?
EN

Stack Overflow用户
提问于 2018-02-24 05:58:00
回答 1查看 1.1K关注 0票数 5

对于项目中包含的几个库*.d.ts文件,我收到了来自webpack的Invalid module name in augmentation错误。

一个例子来自leaflet-draw,它的d.ts文件的顶部有以下模块声明:

代码语言:javascript
复制
import * as L from 'leaflet';

declare module 'leaflet' {
    interface MapOptions {
        drawControl?: boolean;
    }

完全错误是:

扩充中的模块名称无效。模块“leaflet”在'C:\Users***\Documents\GitHub***\node_modules\leaflet\dist\leaflet-src.js',解析为无法扩充的非类型化模块。

我不完全确定该怎么做,我不想修改d.ts文件本身,因为这些文件是在外部维护的。

我使用的是最新版本的webpack (3.11.0)和ts-loader (3.5.0)。

我的tsconfig编译器选项如下:

代码语言:javascript
复制
"compilerOptions": {
        "target": "es5",
        "sourceMap": true,
        "outDir": "./dist",
        "rootDir": "../",
        "noImplicitAny": false,
        "noImplicitThis": false,
        "noUnusedLocals": false,
        "noUnusedParameters": false,
        "pretty": true,
        "removeComments": false,
        "allowUnreachableCode": false,
        "declaration": false,
        "allowJs": true,
        "module": "commonJs",
        "typeRoots" : ["./typings/index.d.ts", "../../node_modules/@types"]
    }

我非常感谢任何人能提供的任何帮助,以帮助我进一步了解错误以及如何尽可能解决它。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-07-07 04:49:43

您需要将import语句放在declare模块中。

代码语言:javascript
复制
declare module '@hyperapp/router' {
  import { VNode } from 'hyperapp'

  export function Link(props: LinkProps): VNode<LinkProps>

  ...
}

当import语句位于文件的第一行时,当我尝试添加上面的声明文件(由@m0a编写,其PR尚未被接受)时,我遇到了相同的错误--这感觉非常自然。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48956805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档