在 JHipster (v5.82) 项目中包含自定义类型
Including custom typings in JHipster (v5.82) project
基本思路是从一个新的 JHipster 项目 (v5.8.2) 开始,并在其中集成 Metronic Angular 主题。
我没有找到很多关于此任务的文档,但我缓慢地集成了各种 css/js 包,组件,但是我 运行 遇到了他们的一些指令的问题。
所以基本上在 toggle.directive.ts 视图启动后,它会尝试创建一个新的 KTToggle see
ngAfterViewInit(): void {
this.toggle = new KTToggle(this.el.nativeElement, this.options);
}
KTToggle 在 scripts.bundle.js 中定义,我已经在 vendor.ts 中导入了。
我还在 src/main/webapp/app.
中从 metronic 复制了 typings.d.ts 文件
问题是它没有找到 KTToggle,当 运行ning npm 运行 webpack:build 我没有收到错误,但是当实际尝试访问我得到的页面时
ERROR ReferenceError: "KTToggle is not defined"
此外,在 IntelliJ 中我收到以下错误
TS2350: Only a void function can be called with the 'new' keyword
我试图在指令中直接声明 KTToggle
declare var KTToggle: any;
但这给了我同样的 ReferenceError。
同样在 tsconfig.json 中,我试图通过 typeRoots、types 指向打字文件, files 都给了我同样的错误,或者 types 导致应用程序的其他部分失败。
我对 Angular/Webpack 不太熟悉,但我怀疑输入没有正确加载,因为如果我尝试转到 IntelliJ 中 KTToggle 的定义它指向 scripts.bundle.js 文件。
欢迎任何形式的帮助,谢谢。
附加信息:
typings.d.ts
/* SystemJS module definition */
declare var module: NodeModule;
interface NodeModule {
id: string;
}
declare var KTMenu: any;
declare var KTOffcanvas: any;
declare var KTScrolltop: any;
declare var KTHeader: any;
declare var KTToggle: any;
declare var KTUtil: any;
declare var KTPortlet: any;
declare var KTDialog: any;
declare var Chart: any;
scripts.bundle.js
.....
KTToggle=function(t,e){var n=this,i=KTUtil.get(t);KTUtil.get("body");if(i){var o={togglerState:"",targetState:""}
....
L.E。 2020-04-11
我们最终做的是在 webpack 配置文件(dev 和 prod)中设置一个新的入口点,如下所示:
entry: {
global: './src/main/webapp/content/scss/global.scss',
main: './src/main/webapp/app/app.main',
// metronic scripts bundled, contains needed JS for Metronic functionalities
metronicScripts: [
'./src/main/webapp/content/metronic/assets/demo/default/base/scripts.bundle.js'
]
},
然后在常见的 webpack 配置中,我们修改了 HtmlWebpackPlugin 以包含新块,如下所示:
new HtmlWebpackPlugin({
template: './src/main/webapp/index.html',
chunks: [
// include metronic bundle before the main bundle so that we can utilize metronic variables in components and initialize the layout for example
'metronicScripts'
,'polyfills'
,'main'
,'global'
],
chunksSortMode: 'manual',
inject: 'body'
}),
之后我们可以像这样在组件内部使用 metronic 的各种元素[=19=]
...
declar var KTUtil: any;
@Component({...})
...
ngOnInit() {
KTUtil.init();
}
对于遇到这个问题的人,寻找答案,在 angular.json 文件中添加对捆绑文件的引用,为我解决了这个问题。
"architect": {
"build": {
...
"options": {
....
"scripts": [
"src/assets/vendors/global/vendors.bundle.js",
"src/assets/js/demo1/scripts.bundle.js"
],
..
}
..
}
(ERROR ReferenceError: "KTToggle is not defined") 表示您没有加载脚本文件 toggle.js,
因此请确保加载 Metronic 在 index.html 文件中加载的所有内容,而不是删除它的导入,默认情况下 Metronic 在 index.html 中加载此文件:
<script src="assets/js/global/components/base/util.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/header.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/menu.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/offcanvas.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/scrolltop.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/toggle.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/dialog.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/wizard.js" type="application/javascript"></script>
基本思路是从一个新的 JHipster 项目 (v5.8.2) 开始,并在其中集成 Metronic Angular 主题。 我没有找到很多关于此任务的文档,但我缓慢地集成了各种 css/js 包,组件,但是我 运行 遇到了他们的一些指令的问题。 所以基本上在 toggle.directive.ts 视图启动后,它会尝试创建一个新的 KTToggle see
ngAfterViewInit(): void {
this.toggle = new KTToggle(this.el.nativeElement, this.options);
}
KTToggle 在 scripts.bundle.js 中定义,我已经在 vendor.ts 中导入了。 我还在 src/main/webapp/app.
中从 metronic 复制了 typings.d.ts 文件问题是它没有找到 KTToggle,当 运行ning npm 运行 webpack:build 我没有收到错误,但是当实际尝试访问我得到的页面时
ERROR ReferenceError: "KTToggle is not defined"
此外,在 IntelliJ 中我收到以下错误
TS2350: Only a void function can be called with the 'new' keyword
我试图在指令中直接声明 KTToggle
declare var KTToggle: any;
但这给了我同样的 ReferenceError。 同样在 tsconfig.json 中,我试图通过 typeRoots、types 指向打字文件, files 都给了我同样的错误,或者 types 导致应用程序的其他部分失败。
我对 Angular/Webpack 不太熟悉,但我怀疑输入没有正确加载,因为如果我尝试转到 IntelliJ 中 KTToggle 的定义它指向 scripts.bundle.js 文件。
欢迎任何形式的帮助,谢谢。
附加信息:
typings.d.ts
/* SystemJS module definition */
declare var module: NodeModule;
interface NodeModule {
id: string;
}
declare var KTMenu: any;
declare var KTOffcanvas: any;
declare var KTScrolltop: any;
declare var KTHeader: any;
declare var KTToggle: any;
declare var KTUtil: any;
declare var KTPortlet: any;
declare var KTDialog: any;
declare var Chart: any;
scripts.bundle.js
.....
KTToggle=function(t,e){var n=this,i=KTUtil.get(t);KTUtil.get("body");if(i){var o={togglerState:"",targetState:""}
....
L.E。 2020-04-11 我们最终做的是在 webpack 配置文件(dev 和 prod)中设置一个新的入口点,如下所示:
entry: {
global: './src/main/webapp/content/scss/global.scss',
main: './src/main/webapp/app/app.main',
// metronic scripts bundled, contains needed JS for Metronic functionalities
metronicScripts: [
'./src/main/webapp/content/metronic/assets/demo/default/base/scripts.bundle.js'
]
},
然后在常见的 webpack 配置中,我们修改了 HtmlWebpackPlugin 以包含新块,如下所示:
new HtmlWebpackPlugin({
template: './src/main/webapp/index.html',
chunks: [
// include metronic bundle before the main bundle so that we can utilize metronic variables in components and initialize the layout for example
'metronicScripts'
,'polyfills'
,'main'
,'global'
],
chunksSortMode: 'manual',
inject: 'body'
}),
之后我们可以像这样在组件内部使用 metronic 的各种元素[=19=]
...
declar var KTUtil: any;
@Component({...})
...
ngOnInit() {
KTUtil.init();
}
对于遇到这个问题的人,寻找答案,在 angular.json 文件中添加对捆绑文件的引用,为我解决了这个问题。
"architect": {
"build": {
...
"options": {
....
"scripts": [
"src/assets/vendors/global/vendors.bundle.js",
"src/assets/js/demo1/scripts.bundle.js"
],
..
}
..
}
(ERROR ReferenceError: "KTToggle is not defined") 表示您没有加载脚本文件 toggle.js,
因此请确保加载 Metronic 在 index.html 文件中加载的所有内容,而不是删除它的导入,默认情况下 Metronic 在 index.html 中加载此文件:
<script src="assets/js/global/components/base/util.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/header.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/menu.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/offcanvas.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/scrolltop.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/toggle.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/dialog.js" type="application/javascript"></script>
<script src="assets/js/global/components/base/wizard.js" type="application/javascript"></script>