在Node应用程序中加载脚本

时间:2015-01-19 18:12:54

标签: javascript node.js

这是我的文件夹结构:

- getable_challenge
  - node_modules
    - stuff
  - main.html
  - main.js
  - backend.js
  - README.md

我想从main.js内加载main.html。以前我一直使用file:///Users/adamzerner/code/getable_challenge/main.html的网址访问该页面,而一个简单的<script src="main.js"></script>允许我加载该脚本。

但是我在localhost:3000设置了一个节点服务器,现在它不会加载脚本。它试图加载localhost:3000/main.js,这可能是错误的路径。我不确定如何构建这个...我该怎么办?

服务器代码(基本上)

var express = require('express');
var app = express();
app.listen(3000);

2 个答案:

答案 0 :(得分:1)

当您使用“文件”协议时,您甚至不使用Web应用程序来提供脚本,您可以直接在本地文件系统上访问它。当您在本地计算机上运行应用程序时,它可以正常工作,但当您尝试将其作为真正的应用程序运行时它会完全中断,因为浏览器不知道“file:/// ...”在哪里,甚至是有权访问它。

您需要将客户端脚本放在一个单独的目录中,通常名为“public”,然后让您的应用程序知道它。如果你使用快递,你会这样做:

app.use(express.static(__dirname + '/public'));

您希望将静态服务的脚本(“public”)放入单独的目录中,以便控制客户端的访问。如果只是将它们放入主目录并使主目录可访问,则可以将所有其他文件公开到公共视图,例如有时包含密码的配置文件。

它还使您的结构更清洁。

答案 1 :(得分:0)

尝试在var app

之后添加此行
app.use(express.static(__dirname));

这应该使您的服务器文件夹中的资源可访问。 var __dirname是服务器执行的路径。