Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在IIS重写/相对基本Url的情况下使用Webpack热中间件/Webpack热重新加载?_Node.js_Webpack_Hapijs_Webpack Hmr_Webpack Hot Middleware - Fatal编程技术网

Node.js 如何在IIS重写/相对基本Url的情况下使用Webpack热中间件/Webpack热重新加载?

Node.js 如何在IIS重写/相对基本Url的情况下使用Webpack热中间件/Webpack热重新加载?,node.js,webpack,hapijs,webpack-hmr,webpack-hot-middleware,Node.js,Webpack,Hapijs,Webpack Hmr,Webpack Hot Middleware,我们正在开发一个应用程序,使用hapi作为Web服务器和webpack热中间件来替换热模块 应用程序服务器在http://hostname:8080 通常可通过http://hostname/my/module/ 制作http://hostname/my/module/为在主机名:8080下运行的应用程序提供服务,我们正在使用IIS重写,重写http://hostname/my/module/(…)至http://hostname:8080/(…) 现在,使用webpack热中间件开发时出现了这

我们正在开发一个应用程序,使用hapi作为Web服务器和webpack热中间件来替换热模块

应用程序服务器在
http://hostname:8080

通常可通过
http://hostname/my/module/
制作
http://hostname/my/module/
为在
主机名:8080下运行的应用程序提供服务,我们正在使用IIS重写,重写
http://hostname/my/module/(…)
http://hostname:8080/(…)

现在,使用
webpack热中间件开发时出现了这个问题。看起来,webpack热模块替换总是试图将其hmr端点(我认为用于检测/服务更改的websocket)硬编码在
/\uuuuuWebpack\uHMR
上,如果根页面
http://hostname/my/module/
已打开-解析为
http://hostname/__webpack_hmr
。当然,由于IIS运行在
http://hostname/
不知道任何有关webpack hmr的信息

现在,对于开发,使用自己的地址
http://hostname:8080/
但随后,会发生CORS错误:

CORS策略已阻止从源“”访问“”处的资源:请求的资源上不存在“访问控制允许源”标头

因此,即使我使用
http://hostname:8080
,webpack hmr仍尝试在
http://hostname/__webpack_hmr
然后会因CORS错误而再次失败

是否有任何选项可以告诉
webpack.HotModuleReplacementPlugin
它应该作为相对路径服务于
\uuuwebpack\uhmr
端点,因此它最终会成为
http://hostname/my/module/__webpack_hmr
(被重写为
http://hostname:8080/__webpack_hmr
哪个地址正确)

或者,如果这是不可能的,那么在使用
http://hostname:8080/(…)

我在文件里什么也没找到。只有在一些Github问题中提到了Webpack
publicPath
configuration,但我没有看到它对我有什么帮助

更新 我更进一步,检测到将网页包配置中的
网页包热中间件
入口点设置为
“网页包热中间件/客户端”路径=http://hostname/my/module/__webpack_hmr“
使uuu webpack_hmr端点在正确的位置可用

但现在的下一个问题是人力资源管理文件

  • dist.XYZ.hot update.json
  • distbundle.XYZ.hot update.js
    也尝试直接位于根目录下(
    /dist.XYZ.hot update.json
    /distbundle.XYZ.hot update.js
    )。 是否有可能将这些位置设置为相对位置/为它们设置特定的子目录

添加另一个IIS重写以将这些路径重写为类似
http://localhost:8080/dist.XYZ.hot-update.json可以让它工作,但我更喜欢不必为此配置IIS的解决方案。

尝试添加它,但不指定实际的域名和端口

// Add hot reloading in development
  entry: [
    'webpack-hot-middleware/client?reload=true&path=/my/module/__webpack_hmr',
  ],
或者,您可以使用
dynamicPublicPath
并设置正确的
publicPath

// Add hot reloading in development
  entry: [
    'webpack-hot-middleware/client?reload=true&dynamicPublicPath=true',
  ],

检查此处的文档

热更换是可接受ip:8080的开发阶段的一项功能。对于需要一个域的测试和生产,不推荐使用它。@JRichardsz这个问题纯粹是关于开发的。但即使在开发中,我们也需要一个主机名(本地机器的主机名)。如果我们处于开发阶段,在linux桌面上,开发人员不需要域或主机名。只需npm运行dev并打开如下内容:localhost:8080127.0.0.1:8080,一切正常。开发人员不需要重写或其他与网络相关的复杂配置。可能问题在于对NodeJ使用IIS和windows。这些技术都是为linux而生的,同样在生产环境中,linux是最好的选择。如果问题仍然存在,您是否能够使用其他工具,如apache或nginx?