我获取文件的extname,但未定义并抛出错误:
"value" required in setHeader("Content-Type", value)
getFileType.js
const path = require('path')
const mimeType = {
"js": "text/javascript",
"css": "text/css",
"png": "image/png",
"jpg": "image/jpg",
"gif": "image/gif",
"html": "text/html"
}
module.exports = (filePath) => {
let extFileName = path.extname(filePath)
.split('.')
.pop()
.toLowerCase()
if (!extFileName) {
extFileName = filePath
}
return mimeType[extFileName] || mimeType['txt']
}
然后我将其称为mimeType
const mimeType = require('./getFileType')
if (stats.isFile()) {
const fileType = mimeType(filePath)
res.statusCode = 200;
res.setHeader('Content-Type', fileType)
fs.createReadStream(filePath).pipe(res)
}
当我刷新浏览器时,cmd控制台:setHeader(“ Content-Type”,value)中是否需要“ value”?
当我的调试器const fileType = mimeType(filePath)
获得“未定义”时
和浏览器错误:E:\ forld \ README.md不是目录或文件
我不明白为什么?
答案 0 :(得分:1)
我假设您提供的文件的扩展名与mimeType
对象中的扩展名不同。如果是这种情况,您将返回默认值mimeType['txt']
,但是txt
对象中没有mimeType
键。因此,将txt
键添加到mimeType
对象中。
const mimeType = {
"js": "text/javascript",
"css": "text/css",
"png": "image/png",
"jpg": "image/jpg",
"gif": "image/gif",
"html": "text/html",
"txt": "application/text"
}