Feb 26 2019 02:07 PM
I want to include the following JavaScript in my web part:
https://www.gstatic.com/charts/loader.js
I am okay with adding it as a link in the head (using script tags). I am also open to downloading the JavaScript and adding it to my project source so that it is bundled with the web part when I install it.
Which is the best practice? How do I do each?
Feb 26 2019 02:25 PM - edited Feb 26 2019 03:29 PM
SolutionHi @smithme ,
you can find best practics to add external libraries to spfx webpart here https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/basics/add-an-external-library
Talking about gstatic, if you are using plain Javascript, and not React, as per documentation, you need to reference external non-AMD module.
Here you can find a sample https://github.com/AJIXuMuK/issues/tree/master/google-charts
Cheers,
Federico
Feb 26 2019 03:26 PM
I hope I did this right. I added the following to my config/config.json:
"externals": {"charts": {"globalName": "charts"}},
import * as charts from 'charts';
Feb 26 2019 03:43 PM
hi @smithme
if you see the GitHub link that I posted, you can find this configuration:
config/config.json
"externals": { "google": { "path": "https://www.gstatic.com/charts/loader.js", "globalName": "google" } },
google.d.ts under src/typing/
declare module "google" { interface IGoogle { charts: any; visualization: any; } var google: IGoogle; export = google; }
and in your ts webpart
import * as google from 'google';
and then you can use in this way i.e. https://github.com/AJIXuMuK/issues/blob/master/google-charts/src/webparts/helloWorld/HelloWorldWebPa...
Cheers,
Federico
Feb 27 2019 01:34 PM
Thank you Federico. Very help and good find with the GitHub project that uses the Google charts. Thanks.
Sep 25 2019 12:57 AM
@Federico Porceddu - Hi Fererico - sorrry to bother but i'v been searching for a solution for this problem all over the net and your assistance above means hopefully you know what could be my problem.
I have tried to get gsap animation library working in my webpart via cdn https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js
I get it loaded via the config.json:
... and importing in the .ts file:
but when i try to reference it in the render function as i should e.g:
TweenMax.to($('.domclassname'),2,{opacity: 0});
the build fails with code error 2 - as says that TweenMax is not defined.
Is there some declaration i am missing here?
regards
Mark
Sep 25 2019 01:43 AM
Sep 25 2019 01:51 AM
@Federico Porceddu - hi yes - i used: npm install --save @types/gsap
Sep 25 2019 01:54 AM
@Federico Porceddu - i also tried using
Sep 25 2019 02:27 AM
Hi @mc1052
could you please try the following in config.json ?
"externals": { "TweenMax": "https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"
}
Following the docs https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/basics/add-an-external-library I think you are trying to merge non-AMD Module procedure with cdn procedure.
Cheers,
Federico
Sep 25 2019 05:51 AM
@Federico Porceddu - Hi thanks for the response.
I tried running it as cdn:
1. npm install gsap
(https://www.npmjs.com/package/gsap )
2. config.json add external library: