使用visual node cause express不提供静态文件

时间:2013-09-01 13:40:10

标签: node.js visual-studio-2012 express

我有一个工作项目,但我决定尝试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\'来自哪里?

而不是那样,应该有我的项目文件夹。

1 个答案:

答案 0 :(得分:0)

首先,这个:

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

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

使用时

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

Node和express将使用当前的本地目录+路径来提供文件。但是,当您使用可视节点时,它似乎没有正确设置应用程序存储位置的本地路径,因此不幸地将路径设置为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');