首页 > 解决方案 > 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 目标:

标签: djangovue.jswebpack

解决方案


(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 。


推荐阅读