将外部库添加到我的 Angular 6 项目仅在我在本地主机中 运行 时有效
Adding external library to my Angular 6 project only works when I'm running in localhost
我将 Chrome Api 库(来自 https://www.gstatic.com/cv/js/sender/v1/cast_sender.js)动态添加到我的项目中,当我 运行 使用 localhost:4200。但是,当我 运行 使用我的 IP 时它不起作用:192.168.0.144:4200。在这种情况下,应用 运行s,但 Chrome 库不起作用。
这是我的代码:
cast: any;
constructor() {
}
ngOnInit(): void {
console.log('ngOnInit()');
const script = window['document'].createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1');
window['document'].body.appendChild(script);
window['__onGCastApiAvailable'] = (isAvailable) => {
if (isAvailable) {
this.cast = window['chrome'].cast;
const sessionRequest = new this.cast.SessionRequest('<MY_APP_ID>');
const apiConfig = new this.cast.ApiConfig(sessionRequest,
s => { },
status => { if (status === this.cast.ReceiverAvailability.AVAILABLE) { } }
);
const x = this.cast.initialize(apiConfig, this.onInitSuccess, this.onInitError);
} else {
console.log('CAST API is not available !!');
}
};
}
适用于 localhost。
不使用 IP...
我已经尝试在 index.html 中添加库,而不是在组件中动态添加,并得到了相同的结果。
我认为可能是 CORS 问题。然后我尝试配置这个代理,但没有成功:
{
"/v1": {
"target": "https://www.gstatic.com/cv/js/sender/",
"secure": false,
"changeOrigin": true
}
}
并更改此行:
script.setAttribute('src', '/v1/cast_sender.js?loadCastFramework=1');
但只有 localhost 继续工作...帮助!
终于解决了!! Chrome 发件人应用需要支持 HTTPS。所以,我用 ngrok 制作了一个 tunel 并开始工作。
我将 Chrome Api 库(来自 https://www.gstatic.com/cv/js/sender/v1/cast_sender.js)动态添加到我的项目中,当我 运行 使用 localhost:4200。但是,当我 运行 使用我的 IP 时它不起作用:192.168.0.144:4200。在这种情况下,应用 运行s,但 Chrome 库不起作用。
这是我的代码:
cast: any;
constructor() {
}
ngOnInit(): void {
console.log('ngOnInit()');
const script = window['document'].createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1');
window['document'].body.appendChild(script);
window['__onGCastApiAvailable'] = (isAvailable) => {
if (isAvailable) {
this.cast = window['chrome'].cast;
const sessionRequest = new this.cast.SessionRequest('<MY_APP_ID>');
const apiConfig = new this.cast.ApiConfig(sessionRequest,
s => { },
status => { if (status === this.cast.ReceiverAvailability.AVAILABLE) { } }
);
const x = this.cast.initialize(apiConfig, this.onInitSuccess, this.onInitError);
} else {
console.log('CAST API is not available !!');
}
};
}
适用于 localhost。
不使用 IP...
我已经尝试在 index.html 中添加库,而不是在组件中动态添加,并得到了相同的结果。 我认为可能是 CORS 问题。然后我尝试配置这个代理,但没有成功:
{
"/v1": {
"target": "https://www.gstatic.com/cv/js/sender/",
"secure": false,
"changeOrigin": true
}
}
并更改此行:
script.setAttribute('src', '/v1/cast_sender.js?loadCastFramework=1');
但只有 localhost 继续工作...帮助!
终于解决了!! Chrome 发件人应用需要支持 HTTPS。所以,我用 ngrok 制作了一个 tunel 并开始工作。