TypeScript节点示例将无法编译

时间:2012-10-26 10:31:46

标签: typescript tsc

似乎每个人都有样本可以运行,但我的不会......

我在windows 7 64bit中安装了nodejs 0.8.2。是否npm install -g typescript获得了TypeScript支持。然后我从TypeScript下载了源代码并尝试了样本 但我无法得到节点样本进行编译。它返回错误消息:

c:\..\..\typescript\bin\tsc.js:21182
           if(_fs.existsSync(path)) {
                  ^
TypeError: Object #(Object) has no method 'existsSync'
...
...

还有其他人看过这个问题吗?

在没有找到任何东西的情况下四处寻找。

说我有这段代码:

///<reference path="node.d.ts"/>


import http = module("http");

var server = http.createServer(function (req, res)
{
    res.writeHead(200, { 'ContenType': 'text/plain' });
    res.end('Hello World');
});

server.listen(1337);

在Visual 2012 Express for web中输入此内容,显示没有错误。引用到位,智能感知工作正常。但是当我使用带有节点的命令行工具来编译这个文件时,会弹出显示的错误。我没有在我自己的代码中包含_fs.existsSync。

好的...在玩了tsc.js和nodejs之后......我意识到在节点引擎中从require('fs')创建的_fs对象根本就没有一个名为existsSync的函数...... / p>

搜索了一下之后......显然这个功能现在在路径模块下... 我将尝试编辑tsc.js以改为使用路径模块的existsSync函数。

2 个答案:

答案 0 :(得分:2)

好的...改变tsc.js使用_path.existsSync似乎工作。 但经过一些更多的摆弄,我发现我的系统上的节点版本仍然是v0.6.2。 即使我之前尝试安装从网站下载的v0.8.12。 删除v0.6.2并安装v0.8.14后,现在fs模块包含目标函数。

我想知道为什么这个系统上的节点版本被卡在0.6.2~''〜

答案 1 :(得分:1)

我认为问题是因为您的代码中存在拼写错误。尝试使用fs.existsSync(path)。您正在尝试将方法分配给不存在的对象。

fs.existsSync('path/to/file');

fs.exists()与上述内容同义,只有在连接成功时才使用回调。

fs.exists('/path/to/file', function (exists) {
  util.debug(exists ? "it's there" : "no passwd!");
});

http://nodejs.org/api/fs.html#fs_fs_exists_path_callback