我刚刚使用Angular 6创建了我的第一个Web组件。一切正常,直到尝试将Web组件集成到现有应用程序中为止:
集成了Web组件(https://www.example.com)的应用程序:
<script type="text/javascript" src="https://component.example.com/html-imports.min.js"></script>
<link rel="import" href="https://component.example.com/element.html">
<my-web-component uuid="2342-asdf-2342-ffsk"></my-web-component>
我的网络组件index.html不包含base-href。
浏览器现在尝试加载Web组件的资产:
https://www.example.com/assets/i18n/de_CH.json
代替
https://component.example.com/assets/i18n/de_CH.json
当我尝试在构建过程中添加base-href时,结果如下:
ng build --configuration=development --base-href https://component.example.com/
Cannot read property 'startTag' of null
TypeError: Cannot read property 'startTag' of null
at IndexHtmlWebpackPlugin.<anonymous> (/home/www-data/.../node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/index-html-webpack-plugin.js:147:62)
at Generator.next (<anonymous>)
at fulfilled (/home/www-data/.../node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/index-html-webpack-plugin.js:4:58)
真的很感谢任何帮助,我的想法已经用完了。
答案 0 :(得分:5)
一些提示:
<base>
中构造<head>
,因为它们都共享相同的起始URL。此外,在这种情况下,同时使用相对URL和绝对URL都是没有意义的。--base-href
配置甚至可以覆盖HTML中的配置,因此请不要担心。 type
标记中的script
,它绝对不是Javascript,也没有必要。最终外观:
<base href="https://component.example.com/">
<script src="html-imports.min.js"></script>
<link rel="import" href="element.html">
<my-web-component uuid="2342-asdf-2342-ffsk"></my-web-component>
回到问题所在,您能给我介绍一下您的组件源代码吗?问题可能出在组件内部加载文件的方式上,而不是组件的导入方式上,也不在于此处的代码。
答案 1 :(得分:3)
我假设角度6不再支持base-href。
那样您就会收到此错误。
无法读取null的属性“ startTag”
您可以在这里找到解决方案。
答案 2 :(得分:0)
以上答案均不适合我,因此我发布了解决此问题的方法。我完全停止使用base-href。对于所有资产,我使用其他方式加载它们:
我希望这会有所帮助。