【问题标题】:node.js/typescript can not find local modulenode.js/typescript 找不到本地模块
【发布时间】:2015-06-30 15:33:40
【问题描述】:

当我尝试导入本地文件时,它要么在运行时抛出错误,但使用 tsc 编译它可以工作。当我使它适用于 node.js 时,typescript 在编译时抛出一个错误。

当我这样做时

import A = require("./A");

node.js 抱怨,它找不到 A 模块,打字稿编译得很好。

但是当我把它改成

import A = require("./js/A");

node.js 可以找到该模块,但 Typescript 告诉我有错误。

布局是这样的:

js
\- A.ts
\- B.ts

我单独编译文件,我已经尝试搜索更改打字稿编译器的根目录,但我找不到任何东西。

【问题讨论】:

  • 您是否尝试将 A 导入 B?如果是这样,您应该这样做import A = require("A");
  • @Martin 如果我这样做 typescript 编译但是 node.js 代码不起作用,因为 node.js 期望内部模块是相对于目录根目录的路径(“./js/ A"),但 typescripts 期望它相对于 typescript 文件 ("./A")

标签: node.js typescript node-webkit


【解决方案1】:

没有看到您如何编译 TypeScript,也没有看到您如何尝试从节点 require() 这些文件,很难回答这个问题。

即便如此,我可以告诉你 TypeScript 和 node.js 都期望 require() 被赋予一个相对于执行要求的文件的路径 .

如果我有一个看起来像这样的 js/A.ts:

import B = require("./B");
console.log(B.thing);

还有一个看起来像这样的 js/B.ts:

var myStuff = {
    thing: "I'm a thing!"
}
export = myStuff;

然后我可以用单个tsc -m commonjs ./js/A.ts 编译两个文件

然后我可以运行节点:node ./js/A.js 并会看到输出:

I'm a thing!

【讨论】:

  • 好吧,刚刚试过,vanilla nodejs 工作正常,但使用 node-webkit 它不起作用。 github.com/nwjs/nw.js/wiki/Differences-of-JavaScript-contexts
  • @WebFreak001 你是如何在 node-webkit 中加载 js 文件的?你仍然需要使用require()。如果你把 TypeScript 编译的 js 的路径放到 <script src={path_to_js}> 中,它会搞砸模块加载。
  • 是的,我做到了,现在将其更改为需要
猜你喜欢
  • 2018-08-05
  • 1970-01-01
  • 2021-11-03
  • 2017-07-23
  • 2012-04-22
  • 2022-07-26
  • 1970-01-01
  • 2019-08-16
  • 2016-09-20
相关资源
最近更新 更多