首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用globalDependencies (类型记录tsd文件)来自Angular2

使用globalDependencies (类型记录tsd文件)来自Angular2
EN

Stack Overflow用户
提问于 2016-06-01 22:46:40
回答 1查看 1.4K关注 0票数 2

我试图在一个DefinitelyTyped项目(RC.0)中使用来自Angular2的类型记录tsd,但是全局依赖项似乎没有正确加载:

代码语言:javascript
复制
typings install --save dt~hellojs --global --save
npm install --save hellojs

我有这样的配置:

typings.json:

代码语言:javascript
复制
"globalDependencies": {
  "hellojs": "registry:dt/hellojs#0.2.3+20160423145325"
}

angular.cli.build.js:

代码语言:javascript
复制
module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'systemjs/dist/system-polyfills.js',
      'systemjs/dist/system.src.js',
      'zone.js/dist/**/*.+(js|js.map)',
      'es6-shim/es6-shim.js',
      'reflect-metadata/**/*.+(js|js.map)',
      'rxjs/**/*.+(js|js.map)',
      '@angular/**/*.+(js|js.map)',
      'angular2-moment/**/*.+(js|js.map)',
      'moment/**/*.+(js|js.map)',
      'hellojs/**/*.+(js|js.map)'
    ]
  });
};

system-config.ts

代码语言:javascript
复制
/** Map relative paths to URLs. */
const map: any = {
  'moment': 'vendor/moment',
  'angular2-moment': 'vendor/angular2-moment',
  'hellojs': 'vendor/hellojs/dist'
};

/** User packages configuration. */
const packages: any = {
  'moment': { main: 'moment.js', defaultExtension: 'js' },
  'angular2-moment': { main: 'index.js', defaultExtension: 'js' },
  'hellojs': { main: 'hello.all.js' }
};

但是,如果我使用来自角模块的新依赖项,如下所示:

代码语言:javascript
复制
import {Component} from "@angular/core";
import {FormBuilder, ControlGroup} from "@angular/common";
import {ROUTER_DIRECTIVES, Router} from "@angular/router";
import {LoginResourceService} from "../shared/services/resources/login-resource.service";
import {AuthService} from "../shared/services/auth.service";
import {AppRoutes} from "../app-routes";

@Component({
  moduleId: module.id,
  selector: 'app-login',
  templateUrl: 'login.component.html',
  directives: [ROUTER_DIRECTIVES],
  providers: [LoginResourceService],
  styleUrls: ['login.component.css']
})
export class LoginComponent {

  userForm:ControlGroup;
  errorMessage:string;

  constructor(formBuilder:FormBuilder, private _loginResource:LoginResourceService, public router:Router,
              private _auth:AuthService) {
    this.userForm = this.buildLoginForm(formBuilder);
  }
  // ...
  example() {
    hello.init({});
  }

}

我得到了编译器错误:

代码语言:javascript
复制
Error: Typescript found the following errors:
  /Users/fer2d2/dev/personal/web-projects/front-joinfinity/tmp/broccoli_type_script_compiler-input_base_path-xa8whw1k.tmp/0/src/app/+login/login.component.ts (62, 5): Cannot find name 'hello'.

如果我尝试用import * as hello from "hellojs"import hello = require("hellojs")导入模块,失败就会持续存在。

如何使用来自globalDependency的Angular2?

提前谢谢。

编辑

与:import {hello} from "hellojs"import hello from "hellojs"import hello = require("hellojs")

我得到了一个错误:

代码语言:javascript
复制
Error: Typescript found the following errors: /Users/fer2d2/dev/personal/web-projects/front-joinfinity/tmp/broccoli_type_scrip‌​t_compiler-input_base_path-tKuuBwei.tmp/0/src/app/+login/login.component.ts (7, 21): Cannot find module 'hellojs'.

似乎类型记录或系统‘s没有加载globalDependencies tsd的倾向。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-02 20:21:00

最后我解决了我的问题:

在Angular2中,使用和使用角-CLI,您有一个名为typings.d.ts的文件,它导入通过typings install安装的所有类型。在这个文件中,您可以看到以下导入行:

代码语言:javascript
复制
/// <reference path="../typings/browser.d.ts" />

browser.d.ts只包含其他类型之间的Angular2类型。如果您想使用globalDependencies,typings会将它们添加到文件类型/index.d.ts中。因此,在您的typings.d.ts中,您必须添加以下行:

代码语言:javascript
复制
/// <reference path="../typings/browser.d.ts" />

我的问题似乎与最近的类型更新有关,在这种情况下,“dependencies”被替换为“global”作为此依赖项的前缀。

https://www.npmjs.com/package/typings#updating-from-0x-to-10

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37579995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档