Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express JS通过GET端点服务公用文件夹_Node.js_Rest_Express - Fatal编程技术网

Node.js Express JS通过GET端点服务公用文件夹

Node.js Express JS通过GET端点服务公用文件夹,node.js,rest,express,Node.js,Rest,Express,我有一个名为my folder的文件夹,里面是不同的文件夹,我尝试提供HTML和JS和CSS等资产。当我使用Express JS进入路线时,我尝试: router.get('/service/test',(req,res)=>{ app.use(express.static(path.join(uu dirname,'my folder/test/public')) }) my folder的内部是各种文件夹,每个文件夹中都有不同的文件夹,我希望能够从my folder中的任何文件夹中为文件夹

我有一个名为
my folder
的文件夹,里面是不同的文件夹,我尝试提供HTML和JS和CSS等资产。当我使用Express JS进入路线时,我尝试:

router.get('/service/test',(req,res)=>{
app.use(express.static(path.join(uu dirname,'my folder/test/public'))
})
my folder
的内部是各种文件夹,每个文件夹中都有不同的文件夹,我希望能够从
my folder
中的任何文件夹中为文件夹的
public
目录提供服务,以便在转到以下位置时链接到JS、HTML和CSS:

现在,我已经硬编码了一个
test
文件夹,但这将通过一个参数进行更改


如果您事先知道父文件夹,您会想到为什么这样做不起作用吗?

。您可以使用多个
express.static
外部
router.get
。像这样:

app.use(express.static(path.join(__dirname, 'my-folder/test/public')))
app.use(express.static(path.join(__dirname, 'my-folder/test2/public')))
...
app.get(...)
如果您事先不知道文件夹名称,则需要将其构建为路由,并使用
res.sendFile
返回文件:

app.get('/my-folder/:uid/*', function(req, res){
  var uid = req.params.uid, path = req.params[0] ? req.params[0] : 'index.html';
  res.sendFile(path, {root: `./my-folder/${uid}/public/`});
});

上面的示例将提供请求的路径文件或“index.html”,如果没有提供路径。

您认为我可以做什么:
express.static(“我的文件夹”/**/public”)
,因为我需要这里的任何文件夹。我需要在它自己的端点上提供服务,而不是在
/
上。文件夹名称未知,并且是使用UUID生成的,例如:
c963420f-855b-4903-845a-9d998f320b24
,因此可能有一个文件夹,可能有100个文件夹,我需要服务于一个特定的文件夹,例如:这将服务于该目录的公用文件夹你是一个明星!这太棒了!看起来我缺少了
root
选项?可能是的,
root
现在是必需的,因为安全原因,自上一版本的Express以来。请注意,我在代码中做了一些更改,这样用户就不需要在URL中包含“public”,现在可以从其自己的“public”文件夹中获取文件。