0

我有一个工作项目,但我决定尝试 Visual Node ( http://www.visualnode.info/readme ) 以便在 Visual Studio 环境中使用 node.js。

出于某种原因,该行不会影响 express 以提供静态文件:

app.use(express.static(path.join(__dirname, 'client')));

当试图:

 res.sendfile('client/views/index.html');

引擎搜索错误路径下的文件:

404 Error: ENOENT, stat 'C:\Windows\system32\client\views\index.html'

问题是从哪里来'C:\Windows\system32\'

取而代之的是我的项目文件夹。

4

1 回答 1

0

首先,这个:

app.use(express.static(path.join(__dirname, 'client')));

是一个中间件适配器,因此 express 将自动从client文件夹(使用__dirname)提供静态文件,以建立当前本地目录作为参考。

当你使用

res.sendfile('client/views/index.html');

Node 和 express 将使用当前本地目录 + 路径来提供文件。但是,当您使用 Visual Node 时,似乎没有正确地将本地路径设置为存储应用程序的位置,因此不幸地将路径设置为system32目录。

如果切换到存储和运行应用程序的目录,您可以看到应用程序应该如何工作:

> cd c:\dev\greatwebapp
> node app.js

(当然用真名代替)

你会看到类似的东西:

Express server listening on port 3000

然后,您应该能够将浏览器导航到您的路线/路径之一,并且文件应该正确显示。似乎这可能是 Visual Node 的问题:http ://redgatesupport.red-gate.com/entries/25428576-Working-Directory-Issues 。

要解决此问题,您可以:

res.sendfile(__dirname + '/client/views/index.html');

于 2013-09-01T14:46:42.947 回答