HMR是否可以在远程服务器上使用资源?

HMR是否可以在远程服务器上使用资源?

问题描述:

我正在开发销售队伍的打字稿反应应用程序,并且有一点独特的工作流程用例。为了减轻每次更改我的应用程序时的部署负担,我有一个开关,可以从salesforce页面的本地主机(由webpack-dev-server提供服务)加载js包。HMR是否可以在远程服务器上使用资源?

visualforce

<apex:outputPanel layout="none" rendered="{!$CurrentPage.parameters.local == '1'}"> 
    <script src="https://localhost:8080/bundle.js" /> 
</apex:outputPanel> 

这个伟大的工程,但它是真的很酷,如果我能利用HMR为好。这可能吗?

我已经有HMR在本地资源上工作,但似乎无法从Salesforce中工作。

当你HMR它要求两个文件:

  • something.hot-reload.json
  • 和something.hot-reload.js

如果不能得到这两个文件它失败。在请求这些文件时,请检查您的网络选项卡中是否没有404s。

这里的另一个问题是,如果它需要从远程服务器获取文件,那么该服务器将不在同一个域中,因此CORS将启动。如果您没有将CORS头放在响应中服务器然后请求将失败。

或者,由于CORS只是由浏览器强制执行的,因此您可以在webpack-dev-server上执行一些代理来代理这些文件的请求(如果需要的话)。请参阅https://webpack.js.org/configuration/dev-server/#devserver-proxy

+0

所以我想我可以解决CORS问题,但是我认为是'something.hot-reload.json'和'something.hot-reload.js'问题。 该URL中的“something”指向远程服务器,但我认为它需要指向localhost?无论如何配置这个? – NSjonas

+0

找到正在提供.json和.js文件的位置 - 例如,在浏览器中转到http://localhost/i/think/they/are/here/hot-reload.json - 您应该看到一个JSON文件 - 好吧,现在你知道他们在哪里...下一步... – danday74

+0

是让请求去正确的地方 - 我想我的答案是设置公共路径 - https://webpack.js.org/配置/ dev-server /#devserver-publicpath - 或者你可以在任何需要代理的地方设置一个代理来代理hot-reload.json到localhost的请求(这可能并不容易,我认为在我的场景中两台服务器因为它是可能的) – danday74