javascript - 在 Angular 中创建 javascript 对象时出错
问题描述
我正在尝试在我的 Angular 9 项目中使用 javascript 代码 cors_upload.js将视频上传到 youtube。但是,我收到一个错误:
src_assets_js_cors_upload_js__WEBPACK_IMPORTED_MODULE_1__.MediaUploader is not a constructor.
以下是我已经做过的事情:
- 我已经创建了一个项目并获得了 API 密钥。
- 我已经请求 youtube 上传权限并且用户已授予它
- 下载并包含在 src/assets/js 文件夹中的 cors_upload.js 文件。
- 在 angular.json 中包含 CORS 上传脚本
"scripts": [ "src/assets/js/cors_upload.js" ]
- 在代码中,我将 cors_upload.js 中的函数导入为
- 下面是我尝试创建 MediaUploader 对象的代码:
var uploader = new ytapi.MediaUploader({ baseUrl: 'https://www.googleapis.com/upload/youtube/v3/videos', file: uFile, token: token, metadata: metadata, params: { part: Object.keys(metadata).join(',') }})
在 cors_upload.js 中,MediaUploader 被声明为构造函数:
/**
* ...
* @constructor
* @param {object} options Hash of options
* @param {string} options.token Access token
* @param {blob} options.file Blob-like item to upload
* @param {string} [options.fileId] ID of file if replacing
* @param {object} [options.params] Additional query parameters
* ...
*/
var MediaUploader = function (options) {
...
}
解决方案
我发现了这个问题。我试图从服务创建 javascript 对象。那没有用。我将创作移至组件。现在,我可以创建 javascript 对象了。
我在声明组件之前将 MediaUploader 声明为一种类型
declare var MediaUploader any
然后在我的代码中我可以创建对象:
var uploader = new MediaUploader(...)
uploader.upload()
我仍然想知道如何从服务创建 Javascript 对象。可能吗?如果不是,为什么?现在,在我的代码中我可以继续。
推荐阅读
- mysql - 删除表/数据库时仍然错误“定义了多个主键”
- rust - 在 `#![no_std]` 模式下是否可以解除恐慌?
- html - 当片段标识符已在 URL 中使用时,如何指向锚点?
- http - 为什么在这个 snort 规则中缺少 '.' 的 EOF
- ruby-on-rails - 无法理解 secret_token 的 Rails 弃用警告
- java - 无法使用 setBinaryStream 将二进制文件保存到使用 java 准备语句的 postgreSQL
- amazon-redshift - 如何更改 Redshift Spectrum 中的外部表?
- tensorflow-datasets - 如何使用 tf.data.Options()?
- android - Layout.xml 文件在 android studio 3.3.2 中不可见
- c# - 拒绝包含未知查询参数的请求?