【问题标题】:using tone.js within angular6使用角度为 6 的tone.js
【发布时间】:2019-05-27 21:18:11
【问题描述】:

我正在尝试以 Angular 6 导入tone.js。正如tone.js 安装doc 中提到的,我安装了tone.js。

npm - npm install tone

我尝试在 app.module.ts 中导入 Tone

import { ToneJs } from 'tone';
imports: [
   ToneJs,
   ...
]

我遇到了这个异常:

Error: Unexpected value 'undefined' imported by the module 'AppModule'

如何导入和使用带有 angular 的tone.js?

这是我的角度版本

ng -v
Angular CLI: 6.0.1
Node: 8.11.1
OS: darwin x64
Angular: 6.0.1

编辑:

当我尝试将其加载到组件中时

import { Component } from '@angular/core';
import { ToneJs } from 'tone';
@Component({
  selector: 'app-player',
  templateUrl: './player.component.html',
  styleUrls: ['./player.component.css']
})
export class PlayerComponent {  
    constructor(private toneJs: toneJs) { }
}

我明白了:

Error: Can't resolve all parameters for PlayerComponent: (?).

【问题讨论】:

  • 看起来您正试图将 ToneJS 添加到 importsNgModule 声明中,但 ToneJS 不是 Angular 模块。
  • 我认为您的导入不正确,文档需要/导入 Tone 而您正在导入 ToneJs
  • 尝试将tonejs 导入为import * as Tone from 'tone'; 并添加此行declare var Tone: any; // i am assuming you dont have typings for ToneJS 并在您的构造函数中检查是否定义了Tone。 (typeof Tone !== 'undefined')。如果已定义,您可以开始使用它

标签: angular tone.js


【解决方案1】:

今天早上我在谷歌上搜索这个主题时发现了一个名叫Dylan Lawrence 的人创建了a nice starter。超级有用!

【讨论】:

    【解决方案2】:

    如果您使用 angular-cli,您可以尝试将 ToneJS 库作为外部脚本添加到您的 angular.json 中

    projects
    - architect
      - build
        - scripts
          - [ ..., "node_modules/path/to/Tone.js"]
    

    如果您在 src/typings.d.ts 中没有 typings.d.ts 文件,请创建此文件并添加此行 declare var Tone: any;

    现在,您应该可以在整个应用程序中使用 ToneJs 作为全局变量。所以你可以这样使用它:

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-player',
      templateUrl: './player.component.html',
      styleUrls: ['./player.component.css']
    })
    export class PlayerComponent {  
        constructor() { 
            // const loop = new Tone.Loop((time) => { 
                // do something 
            }
        }
    }
    

    【讨论】:

    • 谢谢它的工作原理......但我已经在我的应用程序中使用了一个类 Tone。例如,如何将 Tone 更改为 ToneJs?
    • 你可以反过来做。当您导入 Tone 类时,请将其作为 ToneClass 导入 - import { Tone as ToneClass } from 'path/to/Tone.ts'; 或仅更新类定义,使其在整个应用程序中清晰可见。由于 ToneJS 是第三方库,所以不能直接将全局变量重命名为 ToneJS。
    • 你可以从'tone'导入 ToneJs,它作为默认导入工作。如果您只想在 js 包中包含您使用的内容,您也可以进行深度导入。例如,从 'tone/Tone/core/Transport' 导入 Transport
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2019-03-31
    • 2019-03-19
    相关资源
    最近更新 更多