【问题标题】:Typescript import ts file from node moduleTypescript 从节点模块导入 ts 文件
【发布时间】:2015-08-12 02:04:55
【问题描述】:

也许它是重复的,但我已经搜索了一个小时并没有找到答案。

我有一个名为 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 时,是这样说的

Cannot find external module 'a-module/a'.

我做错了什么?

附:我有用于 SublimeText 的 ArcticTypescript 插件,似乎找到a-module/a 足够聪明。那么为什么 tsc 无法找到我的文件呢?

P.P.S 我的文件结构是这样的

b-module/
  node_modules/
    a-module/
      a.ts
  b.ts

我正在尝试将a.ts 导入到b.ts

【问题讨论】:

  • 你能发布你的目录结构吗?就像 basarat 所说,TypeScript 编译器需要知道模块的位置。
  • @vanhelgen 我已经用提供的文件结构更新了我的问题

标签: node.js typescript tsc


【解决方案1】:

import a = require('a-module/a');

您需要使用相对路径,即../a-module/a,或者为 TypeScript 显式声明它,即declare module "a-module/a"

【讨论】:

  • 如果我的a-module/a 是通过npm install 安装的另一个存储库中的文件a.ts,我应该在哪里声明?
  • 在你的模块中的一些 .d.ts 文件中
  • 如果我写 import a = require('./node_modules/a-module/a') 然后它编译。但它看起来很奇怪。为什么不像 CommonJS 允许的那样导入呢。
  • 我猜这是因为 TypeScript 必须预先知道模块的类型,所以它坚持知道要加载的确切模块。 Node 在运行时解决依赖关系,所以它没有这个限制。
猜你喜欢
  • 2012-11-03
  • 2013-08-25
  • 2017-04-03
  • 2016-12-11
  • 2023-03-09
  • 2020-12-23
  • 1970-01-01
  • 2019-01-26
相关资源
最近更新 更多