在我的客户端javascript中,如果用户获得授权(使用firebase身份验证),我会请求私有内容,如下所示:firebase.auth().onAuthStateChanged(user => { if (!user) { ui.start("#firebaseui-auth-container", uiConfig); } if (user) { import("/private.js").then(module => { console.log(module.default); }); }});所有用户都通过托管网址的公共 firebase 提供服务,但只有当用户获得授权时,他们才会请求私有内容。我的重定向来处理这个问题:index.htmlfirebase.json "rewrites": [ { "source": "**", "function": "app" } ]我正在努力建立一个基于firebase函数的express后端来为javascript服务。(我还没有添加身份验证检查,因为我想让它工作,只是先为js服务)。我的 firebase 函数如下所示:const fs = require("fs");const functions = require("firebase-functions");const express = require("express");const app = express();app.get("/private.js", (req, res) => { fs.readFile("private.js", "utf8", function (err, data) { if (err) throw err; res.send(data) });});exports.app = functions.https.onRequest(app);但是,当用户获得授权并且客户端尝试动态导入时,我收到以下错误:。如何正确设置MIME类型以提供js文件?private.jsFailed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec
3 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
我解决了这个问题。我需要使用:
res.setHeader("Content-Type", "text/javascript"); //Solution! res.writeHead(200); res.end(data);
而且它工作正常。
一只甜甜圈
TA贡献1836条经验 获得超5个赞
您需要告诉浏览器发生了错误,以便它不会尝试将响应解析为JavaScript。您可以通过发送以 4(客户端错误)或 5(服务器错误)开头的状态代码来执行此操作。下面是一个示例:
app.get("/private.js", (req, res) => {
fs.readFile("private.js", "utf8", function (err, data) {
if (err) {
res.status(403).send('Could not load the data.');
} else {
res.send(data);
}
});
});
添加回答
举报
0/150
提交
取消