我使用Visual Studio 2013(更新3),Node.js加載v1.0.20721.02和Node.js的v0.10.31導入類工程在設計時,但在運行時不會
我試圖工具把每個類放入它自己的文件中。
在設計時,一切似乎都很好,intellisense正在工作,代碼編譯沒有問題。
但是,在運行時,節點告訴我它找不到類。
我已經在Visual Studio中創建一個新的節點控制檯項目
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
throw err;Error: Cannot find module 'SomeClass'
at Function.Module._resolveFilename (module.js:338:15)
...
Visual Studio解決方案結構
這是通過在Visual Studio項目模板創建一個標準的解決方案, 不應該只是工作,開箱即用?
我見過不少相關的問題,包括this one,這似乎解決了大多數人遇到的問題,但似乎並沒有解決我的問題。
如在指定的要求(「F完整路徑:\ .. \ .. \。 ..「)這似乎不起作用,也沒有多大意義,它不應該是機器依賴的。 – TimothyP 2014-09-26 14:06:33
不是最好的解決方案,但它暗示可能的問題。嘗試使用'require(」./ SomeClass「)'。 node.js在不存在路徑前綴([請參閱此處(http://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders))時以不同方式解析'require') – yerforkferchips 2014-09-26 14:11:59
TimothyP,而不是機器相關的,Node解析需要通過嘗試在當前工作目錄的'node_modules'目錄中找到它的目標,然後在它的父目錄的'node_modules'中找到目標,繼續到根目錄。如果你想要在這個策略之外的模塊,你需要指定他們的路徑無論是絕對的還是相對於cwd的。 – 2014-09-26 14:32:31