2
关注
1570
浏览

Webpack dev服务器抛出错误 - 拒绝执行脚本,因为它的MIME类型('text/html')不可执行

为什么被折叠? 0 个回复被折叠
chingfeng 未验证用户 用户来自于: 广东省
2020-09-16 16:16

展望的WebPack进一步,我们应该清楚什么是的WebPack并且它的用途。 Webpack是前端工具,它将构建前端项目,并具有管理类似gulp/grunt的任务的能力。它可以是服务器来提供静态内容。但它不是一个完整的后端服务器。您无法轻松构建后端API并管理复杂的路由。这包括登录功能等。使用Webpack作为开发工具来轻松修改并查看网页设计的更新结果,而不是重新发明轮子。如果您需要更多的功能,通过在监视模式下运行它并集成Webpack并同时运行后端服务器并设置代理,以便Webpack将推迟到后端服务器进行复杂的路由。您可以使用任何后端技术,尽管Webpack建立在Common.js库上,因此将它集成到node.js和express中似乎是最简单的,因为它们是javascript生态系统的一部分。

如果我可以发表评论我会,无论如何,我正在阅读DevServer的webpack文档,我认为服务器正在响应不正确的MIME类型,可能是因为它没有找到它的bundle.js脚本期待着它。我注意到控制台输出是'http://localhost:8090/auth/bundle.js',在开发文档中,dev服务器期望它在根目录下。我认为,如果bundle.js真的在auth目录中,您可能需要通过publicPath选项告诉服务器它在哪里。

output: { 
    filename: 'bundle.js', 
    sourceMapFilename: '[file].map', 
    path: path.resolve('build/js/),// moves the bundle.js out of the root 
    publicPath: '/auth/' // it is recommended that the publicPath is declared in both output and devServer 
    // publicPath links the path of bundle.js to this path in the html. 
}, 
devServer: { 
    contentBase: path.resolve(__dirname), // New 
    historyApiFallback: true, 
    publicPath: "/auth/" // Both publicPath options should be the same as what is in your html loading the scripts 
}, 

据我了解webpack开发服务器,bundle.js不写入光盘。它几乎服务。

现在,所有这些都需要代理已经构建的node.js服务器或构建一个来处理您需要使用的api。 Webpack提供了一个开发中间件模块,用作基本node.js express服务器中的中间件。你可以看到中间件的基础知识here。你真正需要开始从文档通过NPM的WebPack-DEV-中间件安装和表达

npm install --save-dev webpack-dev-middleware express

然后在项目的根目录创建一个类似index.js一个新的服务器文件,因为你已经有了一个server.js。现在只需要处理api调用所需的路由和软件包即可创建所需的基本服务器。

const express = require('express'); 
const webpack = require('webpack'); 
const webpackDevMiddleware = require('webpack-dev-middleware'); 

const app = express(); 
const config = require('./webpack.config.js'); 
const compiler = webpack(config); 

// Tell express to use the webpack-dev-middleware and use the webpack.config.js 
// configuration file as a base. 
app.use(webpackDevMiddleware(compiler, { 
    publicPath: config.output.publicPath 
})); 

// Serve the files on port 3000. 
app.listen(3000, function() { 
    console.log('Example app listening on port 3000!\n'); 
}); 

这是从webpack网站,你需要做你自己的api路由。你会像正常的节点项目一样运行项目,它应该处理bundle.js请求。

我们不要忘记,有一个卡奥koa-webpack-dev plubin。我没有亲自使用koa,但如果你需要它,你可以看到如何使用它here。

关于作者

问题动态

发布时间
2020-09-15 15:51
更新时间
2022-09-15 16:01
关注人数
2 人关注

相关问题

简单HyperHtmlElement例子说明不了什么
从html中调用时未定义导入的Javascript函数
学习HTML需要英语基础吗
HTML5的contenteditable属性应该是XSS安全吗?
如何将点击我的html文件的图像url传递给view.py中的python函数Django
HTML和C语言哪个更好用的吗?
拖放HTML5元素和JavaScript的问题
为什么JSDOM更改html结构?
个人工作笔记 Powered BY WeCenter V4.1.0 © 2024 粤ICP备2020123311号