Javascript 使用带有TypeScript-can';我甚至连最简单的例子都做不到
我想在Typescript程序中使用npm模块。幸运的是,我遇到了一个看起来很容易而且确实有效的方法。我想我会尝试添加另一个包,只是为了掌握窍门。所以我就做了 以下是我在提交过程中所做的所有事情:Javascript 使用带有TypeScript-can';我甚至连最简单的例子都做不到,javascript,node.js,npm,typescript,Javascript,Node.js,Npm,Typescript,我想在Typescript程序中使用npm模块。幸运的是,我遇到了一个看起来很容易而且确实有效的方法。我想我会尝试添加另一个包,只是为了掌握窍门。所以我就做了 以下是我在提交过程中所做的所有事情: 将pubsub-js添加到我在package.json中的依赖项中,因此它将安装在npm install上 设置tsd,使用它安装pubsub js的类型脚本定义,并将其设置为在npm install上自动运行 修改了index.ts以包含已安装的定义: /// <reference path=
pubsub-js
添加到我在package.json
中的依赖项中,因此它将安装在npm install
上tsd
,使用它安装pubsub js
的类型脚本定义,并将其设置为在npm install
上自动运行index.ts
以包含已安装的定义:
/// <reference path="./typings/pubsubjs/pubsub.d.ts" />
$ 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安装
,然后运行npm测试
)
我想重申,原始版本(没有我的提交,直接从)实际上是有效的:
$ 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程序中需要一些通用的pubsub库。。。你会怎么做?编写您自己的?问题在于
pubsub.d.ts
不包含CommonJS模块“pubsub js”
的定义(而是只定义一个全局对象pubsubs
)
最好的解决办法是编辑该文件;在底部添加:
declare module "pubsub-js" {
export = PubSub;
}
当CommonJS或AMD模块可用于给定的包时,大多数.d.ts文件已经包含这样的定义。问题是
pubsub.d.ts
不包含CommonJS模块的定义“pubsub js”
(相反,它只定义一个全局对象pubsubs
)
最好的解决办法是编辑该文件;在底部添加:
declare module "pubsub-js" {
export = PubSub;
}
当CommonJS或AMD模块可用于给定的包时,大多数.d.ts文件已经包含这样的定义。该死,你回答得太快了,堆栈溢出还不让我接受!该死,你回答得太快了,堆栈溢出还不让我接受!