Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.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
Javascript 用expressjs服务css_Javascript_Css_Express_Path - Fatal编程技术网

Javascript 用expressjs服务css

Javascript 用expressjs服务css,javascript,css,express,path,Javascript,Css,Express,Path,我在使用expressjs提供css时遇到了很多麻烦。我终于找到了方法,但我有点困惑为什么我的新代码可以工作,而我的旧代码却不能。这是我的新代码,它确实有效: const express = require('express'); const path = require('path'); const app = express(); const port = process.env.PORT || 5010; console.log(__dirname) app.use('/public'

我在使用expressjs提供css时遇到了很多麻烦。我终于找到了方法,但我有点困惑为什么我的新代码可以工作,而我的旧代码却不能。这是我的新代码,它确实有效:

const express = require('express');
const path = require('path');

const app = express();
const port = process.env.PORT || 5010;

console.log(__dirname)
app.use('/public', express.static('public'));
app.set('views', path.join(__dirname, 'views'))

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'views', 'home.html'));
});

app.listen(port, () => {
  console.log(`Server started on port ${port}`);
});
我的文件系统如下所示:

index.js
public
  css
    home.css
views
  home.html
最初没有:

app.use('/public', express.static('public'));
我有:

app.use(express.static(path.join(__dirname, 'public')));
为什么第二个版本可以工作,而第一个版本不行?第二个版本中第一个参数的用途是什么?另外,为了以防万一,我在replit.com上编写代码。

使用1个参数 此代码为当前目录的“public”子目录中的文件提供服务。访问位于
public/css/home.css的文件的URL是:
http://localhost/css/home.css

使用2个参数时 此代码还为当前目录的“public”子目录中的文件提供服务,其虚拟路径前缀为“/public”。因此,访问
public/css/home.css中的文件的URL是:
http://localhost/public/css/home.css

我们可以将第一个参数更改为任何值,例如,如果我们有:

app.use('/static', express.static('public'));
然后相同文件的URL变为:
http://localhost/static/css/home.css

你可以从官方文件中找到更多信息

app.use('/public', express.static('public'));
app.use('/static', express.static('public'));