Node.js Typescript从节点模块导入ts文件
也许是重复的,但我已经搜索了一个小时,还没有找到答案 我有一个名为Node.js Typescript从节点模块导入ts文件,node.js,typescript,tsc,Node.js,Typescript,Tsc,也许是重复的,但我已经搜索了一个小时,还没有找到答案 我有一个名为a-module的节点模块,其中包含一些.ts文件(例如a.ts) 我有另一个节点模块b-module,它的依赖项中有a-module 我想将一些.ts文件从a-module导入b-module。 在b-module中的某个文件中,我写道: import a = require('a-module/a'); console.log(a); 当我试图用tsc编译b-module时,is说 Cannot find external
a-module
的节点模块,其中包含一些.ts文件(例如a.ts
)
我有另一个节点模块b-module
,它的依赖项中有a-module
我想将一些.ts文件从a-module
导入b-module
。
在b-module
中的某个文件中,我写道:
import a = require('a-module/a');
console.log(a);
当我试图用tsc编译b-module
时,is说
Cannot find external module 'a-module/a'.
我做错了什么
另外,我有一个用于SublimiteText的ArcticTypescript插件,它似乎足够智能,可以找到a-module/a
。为什么tsc不能找到我的文件
我的文件结构是这样的
b-module/
node_modules/
a-module/
a.ts
b.ts
我正在尝试将a.ts
导入b.ts
导入a=需要('a-模块/a')
您需要使用相对路径,即
。/a-module/a
,或者显式地为TypeScript声明它,即声明模块“a-module/a”
你能发布你的目录结构吗?就像basarat所说的那样,TypeScript编译器需要知道模块的位置。@vanhelgen我已经用提供的文件结构更新了我的问题如果它是我的某个存储库中的文件a.ts
,那么我应该在哪里声明我的a-module/a
,该存储库是通过npm install
?在您的模块中安装的.d.ts
文件如果我写入import a=require('./node\u modules/a-module/a')
,它就会编译。但是看起来很奇怪。为什么不像CommonJS所允许的那样导入呢?我想这是因为TypeScript必须事先知道模块的类型,所以它坚持要知道要加载的模块的确切类型。节点正在运行时解析依赖项,因此它没有此限制。