Internet Explorer 或 Microsoft Edge 上的 Cordova 运行 浏览器失败

Cordova run browser on Internet Explorer or Microsoft Edge fails

我创建了一个 Cordova 项目并将其与 Angular 6 集成,在使用命令 Cordova Platform Add Browser 添加浏览器平台之后,在执行 ng build 并使用 Cordova 托管 angular 输出之后,使用命令 Cordova 运行 浏览器,它在 chrome 浏览器中工作正常,但是对于 Internet Explorer 或 Microsoft Edge,它无法呈现页面并抛出以下错误消息

System.ArgumentNullException: No message was deserialized prior to calling the DispatchChannelSink.

Parameter name: requestMsg

   at System.Runtime.Remoting.Channels.DispatchChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

   at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

   at System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

   at System.Runtime.Remoting.MetadataServices.SdlChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

   at System.Runtime.Remoting.Channels.Http.HttpServerTransportSink.ServiceRequest(Object state)

   at System.Runtime.Remoting.Channels.SocketHandler.ProcessRequestNow()

我们尝试在 index.html

中添加缺失的 polyfills 和垫片以及元 http-equiv,如下所示
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.13/es5-sham.js"></script>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

当我们执行 cordova 运行 浏览器并在 Internet Explorer 或 Microsoft Edge 中启动托管的 angular 网站时,它应该以与 chrome 浏览器类似的方式工作。

尝试了一天后,发现默认端口 8000 已被占用,因此必须在 run.js 路径 "platforms\browser\cordova\" 中进行更改 具有以下值

args.port = args.port || 8100;
args.target = args.target || "ie";//prior to this instead of "ie" it was "chrome"