我想在打字程序中使用npm模块。幸运的是,我遇到了这,它看起来非常容易,而且看起来确实很有效。我想我会尝试增加另一个包,只是为了掌握它的诀窍。所以我做了叉子和一个相对简单的提交。
以下是我在承诺中所做的一切:
pubsub-js添加到package.json中的依赖项中,因此它将安装在npm install上。tsd,使用它安装pubsub-js的TypeScript定义,并将其设置为在npm install上自动运行。index.ts包括已安装的定义:
///
并导入已安装的软件包:
导入PubSub =require(‘pubsub’);不幸的是,这不起作用。我知道这个错误:
$ npm install
$ npm test
> demo-typescript-node-minimal@0.0.1 test /home/dumbmatter/projects/mini/demo-typescript-node-minimal
> tsc index.ts --module commonjs && node ./index
index.ts(10,25): error TS2307: Cannot find module 'pubsub-js'.
npm ERR! Test failed.  See above for more details.(如果您自己也想这样做,请运行克隆我的回购,运行npm install,然后运行npm test。)
我想重申的是,原始版本(没有我的提交,直接从原始回购)实际上是起作用的:
$ git checkout d002c0dffc9d9f65aca465b0fc6a279bcd23202d
$ npm test
> demo-typescript-node-minimal@0.0.1 test /home/dumbmatter/projects/mini/demo-typescript-node-minimal
> tsc index.ts --module commonjs; node ./index
[ 'abc', index: 0, input: 'abcdefgh' ]
Hello Dave那是怎么回事?为什么我的尝试如此惨败?
我也希望您对在TypeScript中使用npm包的智慧有任何建议。这仅仅是为了便于实际使用而出错吗?如果是这样的话,你会发现你想在你使用的TypeScript程序中找到一些通用的公共库.你怎么做?自己写?
发布于 2015-09-18 22:12:53
问题是pubsub.d.ts不包含CommonJS模块"pubsub-js"的定义(而是只定义全局对象PubSubJS)。
最好的解决方法是编辑该文件;在底部添加:
declare module "pubsub-js" {
  export = PubSub;
}大多数.d.ts文件已经包含了这样一个定义,当一个CommonJS或CommonJS模块可用于给定的包时。
https://stackoverflow.com/questions/32661756
复制相似问题