【发布时间】:2020-02-03 20:28:15
【问题描述】:
我是 Express 的初学者。所以我可能没有正确地提出问题。我创建了一个 MEAN 应用程序,其中我将frontend 和backened 分开。前端在port:4200 上运行,服务器在port:3000 上运行。作为部署的一部分,我想在同一个端口上运行前端和后端。我收到 MIME 类型错误,有人告诉我我的服务器环境有问题。也许我没有正确发送标题。这是我的代码:
我在代码本身中提到了尝试过的解决方案<----TRIED THIS
server.js
const express = require('express');
express.static.mime.define({'application/javascript': ['js']}); <----TRIED THIS
const bodyParser = require('body-parser');
const path = require('path');
// express.static.mime.define({'application/javascript': ['js']}); <----TRIED THIS
const api = require('./routes/api');
const PORT = 3000;
const app = express();
app.use(express.static(path.join(__dirname, 'dist')));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use('/api', api);
app.get('/', function(req, res) {
// res.send('Hello from the server'); <----TRIED THIS
// res.writeHead(200, {'Content-Type': 'text/html'}); <----TRIED THIS
// res.set('Content-Type', 'text/plain'); <----TRIED THIS
// res.setHeader("Content-Type","application/json"); <----TRIED THIS
res.sendFile(path.join(__dirname, 'dist/application/index.html'));
})
app.listen(PORT, function() {
console.log('Server listening on PORT '+PORT);
});
api.js 例如,我只向您展示 GET 函数
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const db = <my db string>;
const jwt = require('jsonwebtoken');
mongoose.connect(
...
)
function verifyToken(req, res, next) {
...
}
router.get('/myarticles', (req, res) => {
var person="Tanzeel Mirza";
console.log('Get request for tanzeel articles');
Article.find({contributor: person}, (error, article) => {
if(error) {
console.log(error)
}
else {
if(!article) {
res.status(401).send('Invalid email')
}
else if(2>4) {
console.log("test passed");
}
else {
res.json(article);
}
}
})
})
module.exports = router;
但我还是得到了
由于不允许的 MIME 类型(“text/html”),从“http://localhost:3000/runtime-xxx.js”加载模块被阻止。
由于不允许的 MIME 类型(“text/html”),从“http://localhost:3000/polyfills-xxx.js”加载模块被阻止。
由于不允许的 MIME 类型(“text/html”),从“http://localhost:3000/main-xxx.js”加载模块被阻止。
请纠正我。
PS:我针对 MIME 错误here 提出了单独的问题。但没有答案。
【问题讨论】:
-
JavaScript 文件是否保存在静态文件夹
path.join(__dirname, 'dist')中?如果是这样,记录从path.join返回的值并检查它是否正确。如果不是,哪个中间件调用应该处理服务脚本文件? -
@Tanzeel。静态中间件应自行处理 mime 类型。请查看repl repl.it/repls/SoreFearlessNagware。我做了一些小的修改,它似乎对我有用
-
@nithin。谢谢你,先生。这与路径的微小变化有关。先生,您能否将其发布为答案,以便我接受。真的很感谢楼主
-
@nithin 你能确认你不是在请求URL中以
dist/开头的js文件吗?这将返回一个 404 http 状态消息 mimetype text/html 并且还可以解释问题! -
@traktor53 URL 中没有 {dist/}
标签: javascript deployment mean-stack mime-types