我正在使用Jhipster 4和Angular 2,并且需要在我的项目中使用第三方库,但是该库在npm上没有,并且没有.d.ts文件。我需要直接包含js。 在vendor.ts中导入适用于通过npm安装的库但不能与我的js一起使用,我如何在我的项目中使用该文件?
答案 0 :(得分:3)
我现在也试图解决这个问题。我实际上无法通过纱线来安装库,可以通过在vendor.ts文件中导入它们来实现..
我当前的解决方法(......直到我能找到正确的方法)将我需要的.js文件复制到src / main / webapp / content / js /并从webpack.common引用它。 CopyWebpackPlugin插件中的js:
在webpack.common.js的插件下,我在CopyWebpackPlugin中添加了一个条目:
new CopyWebpackPlugin([
{ from: './node_modules/core-js/client/shim.min.js', to: 'core-js-shim.min.js' },
{ from: './node_modules/swagger-ui/dist', to: 'swagger-ui/dist' },
{ from: './src/main/webapp/swagger-ui/', to: 'swagger-ui' },
{ from: './src/main/webapp/favicon.ico', to: 'favicon.ico' },
{ from: './src/main/webapp/robots.txt', to: 'robots.txt' },
{ from: './src/main/webapp/i18n', to: 'i18n' },
{ from: './src/main/webapp/content/js/FooLib.js', to: 'FooLib.js'}
]),
然后在webapp / index.html
中添加了一个导入 <script src='FooLib.js'></script>
然后在我使用它的组件中声明它:
declare var Foo: any;
答案 1 :(得分:0)
虽然它不太理想,但你可以使用普通的js。像往常一样在index.html
中链接它,然后在需要使用它的任何TypeScript代码中将库的declare
放在文件的顶部。所以,例如:
import { Component } from '@angular/core';
declare myAwesomeJsLibrary: any;
@Component(/* brevity*/)
export class AppComponent {
constructor() {
myAwesomeJsLibrary.doSomethingAwesome();
}
}
当然,它并没有为您提供任何类型的自动完成功能,但如果确实需要,您可以随时为它创建自己的界面和d.ts文件。通过这种方式,您至少可以使其正常工作。