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 找不到本地模块的主要内容,如果未能解决你的问题,请参考以下文章

S7200编程时找不到添加模似量模块设置

创建Node.js TypeScript后端项目

Node.js、TypeScript、JavaScript 和 Angular 之间的连接 [关闭]

Node.js + TypeScript:类型脚本编译代码的语法不明确

Node.JS + TypeScript如何从堆栈跟踪中跟踪源代码?

使用 TypeScript 在 Node.js 中进行 Sequelize - 没有“new”就无法调用类构造函数模型