目前正在开发一个CEF3 C ++项目,我遇到了一个看似相当顽固的问题,并且确实减慢了开发过程。
我们的应用程序应该提供SPA。我读到file://
方案不适合将本地数据加载到浏览器中,因此我们继续实施CefSchemeHandler
和CefSchemeHandlerFactory
,但到目前为止,我们只执行服务我们SPA的文件。
现在问题:我们特别想加载React,React-DOM和Babel,如下所示:
https://unpkg.com/react@16.3.2/umd/react.production.min.js
https://unpkg.com/react-dom@16.3.2/umd/react-dom.production.min.js
https://unpkg.com/babel-standalone@6/babel.min.js
通过CDN的脚本标签加载这些内容时,一切正常。对于我们的mime类型为text/babel
的自定义应用脚本,我只会遇到跨源启动错误。我们希望通过SchemeHandler加载所有“离线”然后,这就是出现问题的地方。
如果我在Windows中加载脚本并通过方案处理程序将它们返回到自定义域,那么我们得到的就是每个脚本开头的语法错误。有时在功能之前为!
,有时则为其他东西
无论我们做什么,它似乎都没有成功
我已经验证过,所有字节(整个脚本)都被加载到浏览器中,因此没有数据丢失。
实施CefSchemeHandler
并向浏览器提供本地巨大脚本和文件的正确方法是什么?
编辑:为了更清楚,我想补充一点,这个问题主要是询问通过CefSchemeHandler提供的完全相同的脚本获取语法错误的可能原因,而不是通过file://正确加载它们的所有内容://或通过CDN。
编辑2:我将自定义方案更改为https://并且CORS现在正在运行。但是我仍然有一个非常奇怪的问题与js加载。这是一个具体的例子:我通过https(工作)加载我的index.html。然后我通过相对路径加载react.js(工作)
<script type="application/javascript" src="lib/react.production.min.js"></script>
然后我想加载react-dom:
<script type="application/javascript" src="lib/react-dom.production.min.js"></script>
我得到[0511/083919.988:INFO:CONSOLE(75)] "Uncaught SyntaxError: Invalid or unexpected token", source: https://test/lib/react-dom.production.min.js (75)
。
现在奇怪的事情:如果我从https://unpkg.com/react-dom@16.3.2/umd/react-dom.production.min.js
加载脚本(react-dom)(它是完全相同的脚本),一切作品!
Plase帮助我!