setHeader(“ Content-Type”,value)是否需要node.js http“ value”?

时间:2018-11-01 05:56:25

标签: node.js

我获取文件的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不是目录或文件

我不明白为什么?

1 个答案:

答案 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"
}