这是我的文件夹结构:
- 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);
答案 0 :(得分:1)
当您使用“文件”协议时,您甚至不使用Web应用程序来提供脚本,您可以直接在本地文件系统上访问它。当您在本地计算机上运行应用程序时,它可以正常工作,但当您尝试将其作为真正的应用程序运行时它会完全中断,因为浏览器不知道“file:/// ...”在哪里,甚至是有权访问它。
您需要将客户端脚本放在一个单独的目录中,通常名为“public”,然后让您的应用程序知道它。如果你使用快递,你会这样做:
app.use(express.static(__dirname + '/public'));
您希望将静态服务的脚本(“public”)放入单独的目录中,以便控制客户端的访问。如果只是将它们放入主目录并使主目录可访问,则可以将所有其他文件公开到公共视图,例如有时包含密码的配置文件。
它还使您的结构更清洁。
答案 1 :(得分:0)
尝试在var app
app.use(express.static(__dirname));
这应该使您的服务器文件夹中的资源可访问。 var __dirname
是服务器执行的路径。