代码之家  ›  专栏  ›  技术社区  ›  marquesm91

创建在智能电视浏览器上运行的react应用程序

  •  7
  • marquesm91  · 技术社区  · 7 年前

    我面临着一个大问题 create-react-app 尝试在智能电视浏览器中运行我的应用程序的环境。

    电视和浏览器规格( http://whatismybrowser.com )

    • 电视:松下TC-32DS600B
    • 浏览器:Chrome 23 FreeBSD
    • 用户代理:Mozilla/5.0(X11;FreeBSD;U;Viera:pt BR)AppleWebKit/537.11(KHTML,像Gecko)Viera/3.18.1 Chrome/23.0.1271.97 Safari/537.11

    以下是我想做的:

    1. 创建新的 创建react应用程序 项目
    2. yarn build
    3. yarn global add serve && serve -s build
    4. 使用我的LAN IP(非本地主机)并在url地址浏览器上键入 http://<my-lan-ip>:5000 (5000端口作为默认端口,由提供 serve 命令)

    当我按照这些步骤操作时,会得到一个空白页。只有在电视浏览器中才会显示空白页。在PC和移动设备上运行良好。

    因此,我想在这里分享一些想法:

    1. 旧的电视浏览器不支持React?
    2. 或者可能只是一个多边形填充问题?
    3. 或者它不支持HTML5、CSS3?

    有人已经面临过这个问题吗?是否有任何解决方案,这是不可能的?

    已编辑:解决方案

    多亏了@Rikin和@JoeClay,我想出了一个解决方案。首先,在下载了Chrome版本23之后,我发现问题是多边形填充(Set和Map)。

    所以安装后 yarn add core-js --dev yarn add raf --dev

    使现代化 src/索引。js公司

    import 'core-js/es6/map'; // <-- added this line after installed packages
    import 'core-js/es6/set'; // <-- added this line after installed packages
    import 'raf/polyfill'; // <-- added this line after installed packages
    
    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import registerServiceWorker from './registerServiceWorker';
    
    ReactDOM.render(<App />, document.getElementById('root'));
    registerServiceWorker();
    

    此外 React Docs 这有助于找到解决方案。

    2 回复  |  直到 7 年前
        1
  •  5
  •   Joe Clay    7 年前

    较新版本的React(v16以上)需要:

    • 这个 Map Set 数据结构
    • 这个 window.requestAnimationFrame() API

    根据MDN,基本 Map Set Chrome直到版本38才添加支持,您必须使用供应商前缀才能访问 requestAnimationFrame 直到铬24。

    由于您的电视使用Chrome 23,您需要对这些API进行聚合填充。这个 React docs 建议使用 core-js babel-polyfill 为此目的。

        2
  •  1
  •   Anthony O'Neill    7 年前

    如果您的目标是运行应用程序 只是 在智能电视上 react-tv a外观: https://github.com/raphamorim/react-tv