Webpack 2:如何匹配包与不匹配的@types?

时间:2017-03-13 15:27:56

标签: typescript npm typescript-typings webpack-2

我尝试使用webpack 2将SoundJS(createJS框架的一个模块)导入到我的打字稿项目中。

在vendor.ts中的

我有

import "soundjs";

以及其他几个有效的进口

使用npm导入的@types定义命名为" soundjs",但是npm包" soundjs"是空的,所以我必须使用另一个npm包,名为" createjs-soundjs"这导致分辨率错误。

当我尝试使用webpack进行编译时,我收到错误"找不到模块:错误:无法解决' soundjs'在' [包含vendor.ts的文件夹的路径]'

如何修复webpack 2以使其解析为createjs-soundjs包?

提前感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

  

如何修复webpack 2以使其解析为createjs-soundjs包?

您不需要,因为createjs-soundjs未打包为模块。这是来自soundjs-0.6.2.min.js,它是图书馆的入口点。

this.createjs=this.createjs||{},function()...

这意味着该库将在浏览器上下文中全局

您还可以从@types/soundjs定义中注意到这一点,其中所有内容都可以通过名称空间进行全局访问

declare namespace createjs {
    export class AbstractPlugin {
        create(src: string, startTime: number, duration: number): AbstractSoundInstance;
        getVolume(): number;
        isPreloadComplete(src: string): boolean;
        ...
    }
}

那么我们将如何在TypeScript中使用这个库?

import "createjs-soundjs";
console.log(createjs.RequestUtils.isImageTag("foo")); // false

如果@types/soundjs已经安装并包含在项目中,您应该获得上下文感知(例如代码完成)。

enter image description here

答案 1 :(得分:0)

  

"找不到模块:错误:无法解决' soundjs'在' [包含vendor.ts的文件夹的路径]'

您应该将soundjs更改为实际存在的包:createjs-soundjs,然后始终使用此名称。