Javascript 使用Node.js和Socket.io查找文件

Javascript 使用Node.js和Socket.io查找文件,javascript,node.js,sockets,include,filesystems,Javascript,Node.js,Sockets,Include,Filesystems,我在客户端使用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);

我在客户端使用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 ...
我的文件也是这样组织的:

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 ...
  • 游戏
    • 图书馆
      • 比基特
      • 三个
      • 等等
    • 版本1
      • 客户
        • index.html
        • index.js
        • index.css
      • server.js
      • database.sql
    • 版本2
    • 版本3
    • 等等
根据要运行的版本,我打开该版本的目录并运行其server.js文件。该行使用
app.use(express.static(\uu dirname+“/client”))
行将客户端重定向到/client/index.html。但是现在只有客户机文件夹中的文件可以通过
标记访问,而不是我在不同版本中使用的库文件夹中的库

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


注意:由于这个问题,在过去的几周里,我一直在学习Node.js,我被迫只使用支持CDN的库。

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

app.use('/libraries', express.static(path.join(__dirname, '..', 'libraries'));
这样做的目的是向应用程序服务器添加新路由。现在可以通过
/libraries
访问
/games/libraries
文件夹中的所有文件


它是如何工作的?您的
express
路由器根据提供的路径使用不同的中间件。这一行告诉路由器,当收到对
/libraries
下任何内容的HTTP请求时,使用
静态
中间件并从
./libraries
提供文件。

var ip=process.env.ip之后添加以下一行

app.use('/libraries', express.static(path.join(__dirname, '..', 'libraries'));
这样做的目的是向应用程序服务器添加新路由。现在可以通过
/libraries
访问
/games/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
//服务客户端文件夹
应用程序使用(express.static(uu dirname+“/client”);
//服务器外部库文件夹
app.use('/libs',express.static(uu dirname+“/../libraries”);
//例:
//将加载库/threejs/threejs.js

您可以使用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
//服务客户端文件夹
应用程序使用(express.static(uu dirname+“/client”);
//服务器外部库文件夹
app.use('/libs',express.static(uu dirname+“/../libraries”);
//例:
//将加载库/threejs/threejs.js

我正在测试你们的每个建议。但是,建议的文件结构存在的问题是,每个版本都有自己的套接字连接和数据库结构。哦,对不起,我看错了,所以您只需要加载当前版本的客户端文件夹和外部库文件夹。然后做第一部分,我会测试你男人的每一个建议。但是,建议的文件结构存在的问题是,每个版本都有自己的套接字连接和数据库结构。哦,对不起,我看错了,所以您只需要加载当前版本的客户端文件夹和外部库文件夹。那就做第一部分对不起,我记错了。它的
path.join()
()还有一个小问题:我意识到我已经通过npm在默认的文件夹node_模块中安装了许多库。我如何从这个文件夹中包含我想要的库(我这里有一堆文件夹,所以我不想包含全部内容)。对不起,从内存中搞错了。它的
path.join()
()还有一个小问题:我意识到我已经通过npm在默认的文件夹node_模块中安装了许多库。我如何从这个文件夹中包含我想要的库(我这里有一堆文件夹,所以我不想包含全部内容)。