【问题标题】:Difference between express.static(path.join(__dirname, '/static')) and express.static(__dirname + '/static')express.static(path.join(__dirname, '/static')) 和 express.static(__dirname + '/static') 的区别
【发布时间】:2020-07-20 07:39:29
【问题描述】:

有什么区别

express.static(__dirname + '/static')

express.static(path.join(__dirname, '/static'))

我应该使用哪一个来提供静态文件

【问题讨论】:

  • 他们指向不同的目录?你查过path.join 做了什么吗?
  • 搞错了。而不是 public 它也必须是静态文件夹
  • @jonrsharpe 他们如何指向不同的目录?
  • @Qix-MONICAWASMISTREATED 此后对该帖子进行了编辑。有一个错字
  • 啊好吧 :) /length

标签: node.js express server static middleware


【解决方案1】:

__dirname 是 Node.js 中的一个全局变量,即:

当前模块的目录名。 more read

console.log(__dirname);
// Prints: /Users/mjr

您可以从应用程序中的任何位置访问它。


path.join() 是节点Path module 的函数,其中:

使用特定于平台的分隔符作为分隔符将所有给定的路径段连接在一起,然后规范化生成的路径。

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'

您的两个示例都生成相同的字符串(在这种情况下!)。 但是使用Path.join 将帮助您从不同的资源或其他类似情况下构建路径,消除不必要的分隔符。

// with Path.join() => say if your platform specific separator is "/"
path.join('/a','b'); // will produce '/a/b'
path.join('\a','/b'); // will produce '/a/b'
path.join('a','\b'); // will produce 'a/b'

这也表明express.static(path.join(__dirname, '/static'))

也可以这样写:

express.static(path.join(__dirname, 'static'))


另一个例子:

express.static(`${__dirname}/${static_path}`)

如果您不确定提供static_path 的资源,这可能会产生问题,这可能会导致路径字符串无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多