【发布时间】:2021-01-14 13:12:34
【问题描述】:
import express from "express"
import path from "path"
const app = express();
const __dirname = path.resolve();
app.use(express.static(`${__dirname}/../'webapp_test`)) //ERROR
app.get(`/`,(req,res)=>{
res.sendFile(`${__dirname}/../webapp_test/todo.html`);
});
app.listen(8080);
通过将 express.static() 路径设置为带有转义序列 ${} 的字符串文字
连接localhost:8080like时发生错误
ForbiddenError: Forbidden
at SendStream.error (WORKING DIRECTORY\node_modules\send\index.js:270:31)
at SendStream.pipe (WORKING DIRECTORY\node_modules\send\index.js:553:12)
at sendfile (WORKING DIRECTORY\node_modules\express\lib\response.js:1103:8)
at ServerResponse.sendFile (WORKING DIRECTORY\node_modules\express\lib\response.js:433:3)
at file://WORKING DIRECTORY/main.js:13:9
at Layer.handle [as handle_request] (WORKING DIRECTORY\node_modules\express\lib\router\layer.js:95:5)
at next (WORKING DIRECTORY\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (WORKING DIRECTORY\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (WORKING DIRECTORYt\node_modules\express\lib\router\layer.js:95:5)
at WORKING DIRECTORY\node_modules\express\lib\router\index.js:281:22
但是,如果我使用path.join 方法将路径设置为
app.use(express.static(path.join(__dirname,`..`,`webapp_test`));
app.get(`/`,(req,res)=>{
res.sendFile(path.join(__dirname,`..`,`webapp_test`,`todo.html`));
});
页面加载良好
我错过了什么?
【问题讨论】:
-
const __dirname = path.resolve();这里的目的是什么让我混淆使用 __dirname 作为 const 因为它是保留的
-
我已经将js文件的类型设置为“模块”以使用“import”而不是require。
-
这样做,为了使用__dirname,我必须将其设置为路径模块的解析方法