如何让Angular在运行IE9的HTA中工作



我需要开发一个HTML应用程序(HTA)来解决业务问题。我认为在后台使用Angular将极大地简化开发。

我已经通过ng new创建了一个新的Angular项目,并进行了一些小的更改(详见下文),但当我运行构建的HTA文件时,我会收到以下错误:

错误:"控制台"未定义

并且页面从不在HTA窗口中加载。

HTA使用IE 9(该应用程序的要求防止使用更高版本的浏览器),因此该应用程序包含以下元标签:

<meta http-equiv="X-UA-Compatible" content="IE=9">

Angular的文档指出,如果我在polyfills.ts中取消注释所有必要的polyfill,那么IE 9是受支持的,我已经这样做了:

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

我已将包含的index.html文件重命名为index.hta,并在.angular-cli.json中进行了相应的更改。

我尝试将以下代码直接放入polyfills.ts中,以避免丢失console:

if (!window.console) console = {error: function() {}};

但我根本无法构建,因为它不喜欢我重新定义console:

ERROR in src/polyfills.ts(77,22): error TS2322: Type '{ error: () => void; }' is not assignable to type 'Console'.
Property 'assert' is missing in type '{ error: () => void; }'.

有人能提出今后的发展方向吗?

我通过在index.hta<app-root></app-root>行下添加以下代码解决了这个问题:

<script>
// HTAs don't have a console.
console = {};
</script>

现在,当我双击HTA文件时,我会看到"欢迎使用应用程序!"屏幕。

Angular的构建过程似乎并没有仔细查看主页面内声明的JavaScript。

相关内容

  • 没有找到相关文章

最新更新