我有一个工作项目,但我决定尝试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\'
来自哪里?
而不是那样,应该有我的项目文件夹。
答案 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');