2

似乎每个人都有样本可以工作,但我的只是不会......

我在 Windows 7 64 位中安装了 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 中输入此内容,没有显示错误。参考已经到位,智能感知工作正常。但是当我使用带有 node 的命令行工具来编译这个文件时,它会弹出进一步显示的错误。我没有在我自己的代码中包含 _fs.existsSync。

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

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

4

2 回答 2

2

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

不知道为什么这个系统上的node版本卡在0.6.2~''~

于 2012-10-29T04:04:12.700 回答
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

于 2012-10-26T17:08:01.493 回答