我正在使用Visual Studio 2013(更新3),Node.js Tools v1.0.20721.02和Node.js v0.10.31
我正在尝试将每个班级放入自己的档案中 在设计时,一切似乎都很好,intellisense正在工作,代码编译没有问题 然而,在运行时,节点告诉我它找不到类。
我通过在Visual Studio中创建一个新的Node控制台项目来反复重现这一点
SomeClass.ts
export class SomeClass
{
name: string;
constructor(name: string)
{
this.name = name;
}
}
app.ts
///<reference path="Scripts/typings/node/node.d.ts"/>
import some = require("SomeClass");
var instance = new some.SomeClass("Batman");
console.log(instance.name);
生成的javascript输出如下所示:
SomeClass.js
var SomeClass = (function () {
function SomeClass(name) {
this.name = name;
}
return SomeClass;
})();
exports.SomeClass = SomeClass;
//# sourceMappingURL=SomeClass.js.map
app.js
///<reference path="Scripts/typings/node/node.d.ts"/>
var some = require("SomeClass");
var instance = new some.SomeClass("Batman");
console.log(instance.name);
//# sourceMappingURL=app.js.map
运行时输出
module.js:340个
扔错了;错误:无法找到模块'SomeClass'
在Function.Module._resolveFilename(module.js:338:15)
...
Visual Studio解决方案结构
这是Visual Studio中项目模板创建的标准解决方案, 不应该只是开箱即用吗?
我见过很多相关的问题,包括this one,似乎解决了这个问题 大多数人都有的问题,但似乎没有解决我的问题。
答案 0 :(得分:1)
请尝试使用require("./SomeClass")
:
node.js以不同的方式解析require
,因此在这种情况下,您需要告诉它查看当前目录,而不是核心模块或内部一个(不存在的)node_modules
目录。
关于运行前没有失败的原因的进一步信息,由评论中的OP给出:
显然,VS会解决所有问题,无论你是否加上'./',并且在运行时节点需要先添加'./'。
答案 1 :(得分:0)
再次运行程序,在需要之前添加以下行:
console.log("cwd:%s", process.cwd());
然后调整所需的路径,使其从当前工作目录(cwd)开始。