django - Webpack - 关闭对 /sockjs-node/info 的请求或指定不同的端口
问题描述
我一起运行 Django 和 Vue,组合运行得相当好。Django 在 http 8000 上运行,webpack 开发服务器在端口 3000 上运行,JS 或 Vue 更改会自动编译,我只需要重新加载页面(这不是 SPA 应用程序)。
Django-webpack 加载器用于通过以下标签提供捆绑包:
<script type="text/javascript" src="http://localhost:3000/static_src/bundles/pssystem/data.js" ></script>
我不使用 Vue-CLI,也无意从 Django 迁移到 Node 前端。
生活是美好的,其他一切都很好。
唯一烦人的一点是这样的重复请求:
http://localhost:8000/sockjs-node/info?t=1607750560606
这是 devtools 为 host:port 请求显示的内容。应用程序在 8000 瓦。Django,将 3000 与 devServer 捆绑在一起,socksjs 也需要在 3000 上。
现在,Django 没有找到该资源,因此它的日志与 404 杂乱无章。我实际上编写了一个 410,但是,不,Vue 只是要 ping 和 ping 和 ping 那个 410。
#urls.py
url("^sockjs-node/info", views.nodeinfo),
#views.py
def nodeinfo(request):
return HttpResponseGone()
现在,我试图寻找这个。Vue 论坛上的答案很多,其中大多数涉及更改为vue.config.js ,位于package.json旁边。
更新:因为我没有使用 Vue-cli,所以设置似乎需要在webpack.config.js中进行。
在尝试了 2 或 3 条建议后,其中大多数似乎没有多大意义(本地主机问题最终会出现一个“修复”,其中包含一个指向0.0.0.0
例如 devserver 条目的“修复”),但它们都不起作用。
devServer
没有帮助的配置:
{
hot: false,
port: 3000
};
{public: 'localhost:3000'}
{sockPort: 3000}
{sockPort: 3000,sockHost: 'localhost'}
{inline: false}
我所看到的线程似乎都没有非常权威的答案。或者,更有可能的是,我在发布的所有噪音中都找不到正确的答案。
(我确实看到有人建议通过添加标志来更改 webpack 命令--no-inline
,但还没有尝试过)。
我不会在生产中运行节点,只会运行 webpack 捆绑到静态文件。我不在乎这里的https。我也不关心通过重新配置东西来让 sockjs 工作——事情工作得很好,没有任何遗漏,所以把它关掉不会有什么坏处。
我只希望这些请求停止从客户端代码发出。完全。我怎么做?
(PS如果你想回答,请说明你提出的vue.config.js内容以什么方式解决了这个问题——我刚刚看到太多这个解决了它,没有一点关于配置内容如何服务的信息关闭。这意味着使用该解决方案的人不理解它并使用复制和祈祷编程)。
版本:
vue@2.6.11
webpack-dev-server@3.11.0
npm --version 6.14.6
node --version v10.15.0
最后但同样重要的是,这些是我的 webpack 目标:
每当我更改 JS/Vue 文件时,在服务器上观看并重新编译,3000 上的包被刷新。
主要的服务器功能由 Django 通过服务器端模板提供 html,在与节点的 devServer 不同的端口上。
无需在客户端上重新加载热模块。在我刷新页面之前,我可以继续使用陈旧的捆绑包。 这不是,也不能是 SPA 或 Node 前端应用程序。
解决方案
(OP 的编辑:这个答案得到了赏金,因为它告诉我 Vue 在这里的相关性低于 Webpack,并且因为我对 Webpack 的相关配置选项的调查显示没有任何东西可以关闭这些请求。我现在得到的结论是这个无法完成 -据我了解,如果 Django 在 :8000 提供服务,那么 Webpack HMR 隐含地希望能够在同一个主机:端口进行轮询,而没有重新路由或关闭它的选项。所以,暂定的答案更多的是不,不能做)。
由于您没有使用 Vue CLI,因此您需要一个webpack.config.js,而不是vue.config.js。假设您devServer
正在运行localhost:3000
,(我不确定您的非标准设置)您可以在项目根目录的webpack.config.js中尝试此操作:
module.exports = {
devServer: {
host: 'localhost',
port: 3000
}
};
如果这不起作用,我建议使用 Vue CLI 重新创建您的项目,并在服务器文件夹中为您的后端使用单独的 repo/ package.json 。
推荐阅读
- c - strcpy 将结构名称复制到字符数组?
- c# - Why would a non-UI thread block the UI?
- python - Python regular expression match number in string
- c# - 在 N 层项目中使用泛型的自动映射器
- excel - 简单代码在即时窗口中工作,在应用程序中生成 1004 错误
- html - “FormComponent”类型上不存在属性“名称”
- javascript - javascript文件404,但它肯定存在
- c# - Errors when using the C# 7.0 Tuple in a method
- c# - Find value in dictionary which is inside another dictionary
- macros - Zabbix中Item Key的宏