我跑了
node src/app.js
在mean-to目录
中express.static('public')
会起作用,为什么?
不需要指定路径?
规则是什么?
我知道
__dirname+'/../public'`
工作正常。
只想确定这里的逻辑
我查阅了文档 http://expressjs.com/en/starter/static-files.html
它说
“将包含静态资产的目录的名称传递给express.static中间件函数,以便直接开始提供文件。”
“您提供给express.static函数的路径 相对于您启动节点进程的目录 ”
这是否意味着
为了安全起见,最好使用 __ dirname 来获取目录的绝对路径
答案 0 :(得分:2)
Express static使用模块path
使用path
的示例:
var p = require('path');
p.resolve('public'); // will return your absolute path for `public` directory
因此,表达静态的规则与path#resolve
函数
您可以在path模块
的文档中查看更多示例
p.resolve
和__dirname
之间的区别是什么?
p.resolve()
解析为绝对路径
path.resolve('public');
将返回public
'的绝对路径目录(例如" C:\projects\myapp\public
")
path.resolve('src'); // => "C:\projects\myapp\src")
__dirname
- 您当前正在运行应用的目录名称(绝对路径)
档案app.js
console.log(__dirname);
正在运行node app.js
会为您的应用打印绝对路径,例如" C:\projects\myapp
"
答案 1 :(得分:0)
你将2行混合在一起......两者都是必要的:
//This line is to say that the statics files are in public
app.use(express.static(__dirname + "/public"));
//This another line is to say that when call the route "/" render a page
app.get("/", function (req, res) {
res.send('Hello World!');
}
答案 2 :(得分:-2)
可能原因是从目录高一级运行它而不是dir代码?尝试从src运行它:
cd src
node app.js