为什么使用path.join()而不是静态('public')
在我读过的所有节点快速教程中,以下语法用于创build公用目录:
var path = require('path'); app.use(express.static(path.join(__dirname, 'public')))
但是下面的工作很好:
app.use(express.static('public'))
那么为什么我会使用path模块呢?
最后一个例子使用了一个相对path,如果你从具有public
子目录的目录开始你的应用程序,这个path就可以工作。
但是,如果您从另一个目录启动您的应用程序,它将会中断。 假设您的应用程序位于/path/to/app/directory
但在/tmp
是当前(工作)目录时启动脚本:
/tmp$ node /path/to/app/directory/app.js
在这种情况下,Express将尝试使用/tmp/public
作为静态文件的位置,这是不正确的。
使用path.join(__dirname, 'public')
将创build一个绝对path,使用app.js
所在的目录作为基础。 在上面的示例中,它将parsing为/path/to/app/directory/public
,如果从另一个工作目录启动脚本,这也是有效的。