【问题标题】:Setting Up Node.js App Directory设置 Node.js 应用程序目录
【发布时间】:2014-08-02 05:59:00
【问题描述】:

我对使用 Node.js 甚至使用命令行完全陌生,所以这个问题可能非常初级,但我无法找到解决方案。

我正在尝试使用 Node.js 和 NPM 设置应用程序目录。出于某种原因,每当我尝试使用 port:5000 时,都会收到“Cannot GET/”错误。我的问题是,为什么我的应用目录设置不起作用?

我已经安装了 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,但仍然出现“Cannot GET/test.html”错误。

我知道 Node 工作正常,因为我可以在命令行中输入脚本并且它们会给出正确的输出。我以用户 (kstach1) 的身份执行此操作。

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

任何帮助将不胜感激。

【问题讨论】:

  • 提供您的应用程序文件夹结构可能有助于获得更好的答案。如果没有拼图中的所有部分,几乎不可能猜到发生了什么。
  • @reydelleon 与我的应用程序有关的所有内容都位于用户文件夹 kstach1 中。这包括名为“angularjs”的文件夹和名为“server.js”的文件。在 angularjs 文件夹中,只有一个名为“test.html”的文件。这是我试图引用的文件。它位于 kstach1/angularjs/test.html。

标签: node.js angularjs npm


【解决方案1】:

我对 serve-static 包做了一些研究,并复制了您提供的代码。

我的项目文件夹位于“C:\teststatic”,包含静态文件的文件夹是:“C:\angularjs”,也使用位于“angularjs”文件夹中的“text.html”。

运行您提供的代码并转到 localhost:5000 时,它确实返回“Cannot GET/”。这很可能是因为没有声明“/”文件。 转到 localhost:5000/test.html 对我有用,因此您可以尝试像这样设置“/”:

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

看看这是否适合你。如果没有,您应该仔细检查目录名称/位置。

编辑: 通过阅读您发布的评论:试试这个:

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

【讨论】:

  • 这是我需要的正确答案!谢谢你。我想这一定是一件愚蠢的事情。 ://
【解决方案2】:

我建议将您的 angularjs 文件夹向上移动到 public/ 文件夹中的主项目目录中。将所有静态资产放在 public/ 中是一个非常标准的约定。然后,您可以使用 path 模块自动解析您的路径,将其插入到您拥有 '../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

【讨论】:

    猜你喜欢
    • 2014-11-16
    • 2014-09-30
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多