我需要开发一个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。