使用 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 ...
我的文件也是这样组织的:
- 游戏
- 图书馆
- bigInt
- threejs
- 等...
- version_1
- 客户
- index.html
- index.js
- index.css
- server.js
- database.sql
- version_2
- version_3
- 等...
根据我想要的版本 运行,我打开那个版本的目录和 运行 它的 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
我在客户端使用 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 ...
我的文件也是这样组织的:
- 游戏
- 图书馆
- bigInt
- threejs
- 等...
- version_1
- 客户
- index.html
- index.js
- index.css
- server.js
- database.sql
- 客户
- version_2
- version_3
- 等...
- 图书馆
根据我想要的版本 运行,我打开那个版本的目录和 运行 它的 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