使用 Node.js 和 Socket.io 定位文件

Locating files using Node.js and Socket.io

我在客户端使用 Node.js 和 Socket.io 时遇到本地包含问题。这可能是我 PHP/Apache 我一生中大部分时间对文件请求的心态。

在我的服务器上,我同样加载了页面:

var express = require("express");
var app = express();
var path = require("path");
var server = require("http").createServer(app);
var io = require("socket.io")(server);
var mysql = require("mysql");

var port = process.env.PORT;
var ip = process.env.IP;

app.use(express.static(__dirname + "/client"));

//start opening socket connection handlers ...

我的文件也是这样组织的:

根据我想要的版本 运行,我打开那个版本的目录和 运行 它的 server.js 文件。该行使用 app.use(express.static(__dirname + "/client")) 行将客户端重定向到 /client/index.html。但是现在只有客户端文件夹中的文件可以通过 <script></script><link> 标记访问,但不能通过我跨版本使用的库文件夹中的那些库访问。

如何更改我的代码,以便能够从 /version_x/client/index.html 访问库文件夹中的文件,同时仍将客户端定向到正确的 html 文件?

注意:由于这个问题,在过去几周我一直在学习 Node.js。

,我被迫只使用支持 CDN 的库

var ip = process.env.IP; 之后添加以下行:

app.use('/libraries', express.static(path.join(__dirname, '..', 'libraries'));

这样做是为您的应用程序服务器添加一条新路由。 /games/libraries 文件夹中的所有文件现在都可以通过 /libraries.

访问

它是如何工作的?您的 express 路由器根据提供的路径使用不同的中间件。此行告诉路由器,当 /libraries 下的任何内容的 HTTP 请求进入时,使用 static 中间件并提供来自 ../libraries 的文件。

您可以使用 express.static

提供更多文件夹
//Serve Client Folder
app.use(express.static(__dirname + "/client"));

//Server External Libraries Folder
app.use('/libs', express.static(__dirname + "/../libraries"));


 //Ex: <script src="libs/threejs/threejs.js">
 //Will load libraries/threejs/threejs.js