在node.js中获取[无法GET /test.html]

时间:2014-10-21 21:54:07

标签: javascript node.js

我对节点完全不熟悉,我试图让这个例子起作用:

[/路径/到/节点/ server.js]

var connect = require('connect'); 
var serveStatic = require('serve-static'); 
var app = connect(); 
app.use(serveStatic('../angularjs'), {default: "test.html"}); 
app.listen(5000);

我在angularjs文件夹中有文件test.html: [/path/to/node/angularjs/test.html]

但是当我要求的时候     (本地主机:5000 / test.html的) 我进入了导航器:

无法获得/test.html。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您希望向server-static提供angularjs的绝对路径,以确保其在预期路径中进行搜索。

您可以使用脚本__dirname作为基础:

...serveStatic(__dirname + '/angularjs')...

path.join()

var path = require('path');
// ...

...serverStatic(path.join(__dirname, 'angularjs'))...

这是因为serve-static正在使用的file system module解析了current working directoryprocess.cwd())的相对路径。

因此,../angularjs是否解析为/path/to/node/angularjs取决于从哪个目录server.js开始。

目前,它可以从/path/to/node/angularjs/

开始工作
$ cd /path/to/node/angularjs
$ node ../server.js

# resolves: '/path/to/node/angularjs' + '../angularjs'
# to:       '/path/to/node/angularjs'

或者,通过将../(父目录)更改为./(当前目录),可以从/path/to/node开始:

...serveStatic('./angularjs')...
$ cd /path/to/node
$ node server.js

# resolves: '/path/to/node' + './angularjs'
# to:       '/path/to/node/angularjs'