node.js/typescript 找不到本地模块
Posted
技术标签:
【中文标题】node.js/typescript 找不到本地模块【英文标题】:node.js/typescript can not find local module 【发布时间】: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")
【参考方案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>
中,它会搞砸模块加载。
是的,我做到了,现在将其更改为需要以上是关于node.js/typescript 找不到本地模块的主要内容,如果未能解决你的问题,请参考以下文章
Node.js、TypeScript、JavaScript 和 Angular 之间的连接 [关闭]
Node.js + TypeScript:类型脚本编译代码的语法不明确