typescript - 找不到命名空间“amp”
问题描述
我正在编写一个使用 Azure 媒体播放器的 React/TypeScript 项目。根据引用播放器下的文档,我应该能够像这样引用播放器:
var myPlayer = amp('vid1');
然后我得到一个编译器错误:
TypeScript error in C:/<file path>/<file name>.tsx(47,17):
Cannot find namespace 'amp'. TS2503
我看到这是一个 TypeScript 错误,但文档是为 JavaScript 编写的。
所以我尝试了 TypeScript:
let player: amp.Player = amp("player");
相同的编译器错误。
如何在我的 React/TypeScript 项目中引用 AMP 播放器?
解决方案
TypeScript 抱怨,因为amp
需要先导入类型。根据这个线程,带有 TypeScript 定义的 Azure 媒体播放器的 npm 包尚不可用。但是由于定义可以从 CDN 获得,这里是一个如何将自定义类型添加到项目的示例:
a) 下载azuremediaplayer.d.ts
定义并将其放在src
目录下,例如在单独的文件夹中amp_typings
:
amp_typings
|
azuremediaplayer.d.ts
compilerOptions
b)在您的部分添加对此类型定义的引用tsconfig.json
:
{
"compilerOptions": {
...
"typeRoots": ["node_modules/@types", "amp_typings"]
},
...
}
就是这样,现在amp
模块可以在 React 应用程序中使用。
推荐阅读
- javascript - Discord bot 无法访问 Google Sheets 获取错误请求缺少有效的 API 密钥
- beautifulsoup - newsletter3k,在第一个“by”字之后的可见文本中查找作者姓名
- build - 如何并行执行 Rake 文件任务
- java - 如何为第一个操作正确地从数组列表中检索数据
- java - 布尔值未在数据库中更改
- node.js - 向我的 nodejs restify 项目添加招摇
- javascript - 动态添加/删除多个输入字段后不清除输入(文本)字段值
- javascript - 如何通过 JS(非数组)附加到 JSON 文件
- vim - 如何使 f 和 t 在 vim 中环绕当前行
- python - 无法从scrapy中提取图像链接