Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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
Javascript 仅限Outlook桌面上的web加载项加载问题_Javascript_Reactjs_Outlook_Office Js - Fatal编程技术网

Javascript 仅限Outlook桌面上的web加载项加载问题

Javascript 仅限Outlook桌面上的web加载项加载问题,javascript,reactjs,outlook,office-js,Javascript,Reactjs,Outlook,Office Js,我遇到一个问题,我的加载项在Outlook Online中运行正常,但在Outlook desktop中无法运行。外接程序已从清单中成功激活,但加载后失败。这是一个React+TypeScript项目(在Webstorm中使用NodeJS+webpack进行测试) 我已经将问题缩小到使用任何require语句来导入引用。如果我消除它,它运行良好,并显示我的测试办公室UI Fabric CompoundButton组件。随着代码的旋转,它最终显示一个空白页面。不会引发脚本异常,这在IE设置中已启用

我遇到一个问题,我的加载项在Outlook Online中运行正常,但在Outlook desktop中无法运行。外接程序已从清单中成功激活,但加载后失败。这是一个React+TypeScript项目(在Webstorm中使用NodeJS+webpack进行测试)

我已经将问题缩小到使用任何require语句来导入引用。如果我消除它,它运行良好,并显示我的测试办公室UI Fabric CompoundButton组件。随着代码的旋转,它最终显示一个空白页面。不会引发脚本异常,这在IE设置中已启用

为什么这只会在桌面上失败

要重新编程,请使用三个文件:

  • 开始/主页:myapp.tsx
  • 它呈现TestComponent.tsx
  • 哪个引用了test.jsx
//myapp.tsx 从“./components/TestComponent”导入TestComponent; 从“jquery”导入*为$; 从“React”导入*作为React; 从“react dom”导入*作为react dom; 从“react hot loader”导入{AppContainer}; 常量渲染=(组件)=>{ ReactDOM.render( , document.getElementById('容器') ); }; Office.initialize=函数(){ $(文档).ready(函数(){ console.log('==myapp.tsx.Office.initialize():entered'); 渲染(测试组件); }); }; 如果((模块如有).hot){ console.log('==index.tsx.module()foo'); (模块,如有)。热接受('./组件/应用',()=>{ const nextap=require('./组件/App')。默认值; 渲染(NEXTAP); }); } //TestComponent.tsx 从“React”导入*作为React; 从“office ui fabric react/lib/Button”导入{CompoundButton}; //============ //坏代码! //import foo=require('../scripts/test.jsx'); //============ 导出默认类TestComponent扩展React.Component{ render(){ console.log('==TestComponent.render()'); //============ //坏代码! //testFunction(); //============ 返回( 创建帐户 ); } } //test.jsx 导出函数testFunction(){ log(“test.jsx:testFunction”); }
Office 2013和2016 for Windows(桌面应用程序)使用嵌入式IE 11浏览器进行渲染。IE 11不支持您在Edge、Chrome和Firefox中找到的功能。因此,您需要为IE 11提供替代路径所需的功能

一个快速修复方法可能只是改变TypeScript生成JS的方式,使其与IE 11兼容:

{
    "compilerOptions": {
        "skipLibCheck": true,
        "lib": [ "es5", "dom", "es2015.promise" ]
    }
}

谢谢你,马克,我在复习的时候一定会记住IE 11。然而,在黑客攻击和尝试了一些事情后,我能够得到简单的工作要求参考,所以我们可以排除这种可能性。这个问题实际上似乎是由于被引用的js模块中未解析的开发依赖项引用造成的,奇怪的是,编译器以前没有捕获到这些引用。
{
    "compilerOptions": {
        "skipLibCheck": true,
        "lib": [ "es5", "dom", "es2015.promise" ]
    }
}