设置Node.js应用程序目录

时间:2014-08-01 21:24:58

标签: node.js angularjs npm

我使用Node.js甚至使用命令行都是全新的,所以这个问题可能非常简单,但我无法找到解决方案。

我正在尝试使用Node.js和NPM设置应用程序目录。出于某种原因,每当我尝试使用端口时:5000我得到一个"不能GET /"错误。我的问题是,为什么我的app目录的设置不起作用?

我已经安装了connect和serve-static,但它不会检索文件并侦听端口5000.我在我的用户kstach1中创建了一个server.js文件。这是我在该文件中的代码:

var connect = require('connect');
var serveStatic = require('serve-static'); 
var app = connect(); 

app.use(serveStatic('../angularjs')); 

app.listen(5000);

所以,我不太明白为什么这不会引用我的angularjs文件夹,我想要存储我的应用程序。我通过在名为test.html的文件夹中添加一个文件来测试它,并输入localhost:5000 / test.html,仍然得到"不能GET / test.html"错误。

我知道Node工作正常,因为我可以在命令行输入脚本,并且它们提供正确的输出。我这样做是为了用户(kstach1)。

我唯一可以想到的可能是我做错了,就是我的文件所在的位置。我有我的Mac(kstach1)上的root用户文件夹中的angularjs文件夹,以及server.js文件。这是不正确的?如果这不是问题,是因为安装了Node(usr / local / bin / node)?我对这一点的研究使我认为我的问题也可能是我需要将安装目录添加到我的路径中。但是,除非我知道情况如此,否则我不想搞砸这个。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我对serve-static软件包进行了一些研究并复制了你提供的代码。

我的项目文件夹位于" C:\ teststatic"并且具有静态文件的文件夹是:" C:\ angularjs",也使用" text.html"位于' angularjs'文件夹中。

当你运行你提供的代码并转到localhost:5000时,它确实会返回"无法获取/"。这很可能是因为没有" /"文件声明。 转到localhost:5000 / test.html适合我,所以你可以尝试设置" /"像这样:

app.use(serveStatic('../angularjs', {'index': ['test.html', 'index.html']}));

看看这对你有用吗?如果没有,您应该仔细检查目录名称/位置。

编辑: 从阅读您发布的评论:尝试这样做:

app.use(serveStatic('angularjs'));

答案 1 :(得分:0)

我建议将angularjs文件夹移动到公共/文件夹中的主项目目录中。将所有静态资产置于公共/中是一个非常标准的惯例。然后,您可以使用路径模块自动解析您的路径,将其插入到具有' ../ angularjs':path.join(__ dirname,' public')的位置。

所以,你的代码看起来像这样:

var connect = require('connect');
var serveStatic = require('serve-static'); 
var app = connect(); 
var path = require('path');

app.use(serveStatic(path.join(__dirname, 'public')); 

app.listen(5000);

并且,您的目录结构如下所示:

server.js
public/
    angularjs/
        test.html

然后您应该可以使用localhost:5000 / angularjs / test.html来查看您的test.html