Angular 2系统配置路径导入自定义Javascript模块

时间:2016-03-10 05:11:59

标签: angular

如何在Angular 2中将javascript文件导入为模块?

现在,在我的系统配置中,我有:

System.config({
  paths: {
    lodash: '../../node_modules/lodash/index.js',
    constants: 'app/constants.js'
},

我有一个constants.js文件:

import {Injectable} from 'angular2/core';

@Injectable()
export class Constants{
  api_dir: string;

  constructor(){
      var prod = false;

      if (prod){
          this.root_dir = 'http://google.com/'
      } else{
          this.root_dir = 'http://localhost/'
      }
      this.api_dir = this.root_dir + 'api/'
    }
  }

在我的一个组件中:

import {Constants} from 'constants';

这给了我错误:

Cannot find module 'constants'

如何将javascript文件转换为模块,以便我可以随时导入它而不提供相对路径?

2 个答案:

答案 0 :(得分:1)

如果您正在使用打字稿,则必须先在.d.ts文件中声明您的模块。我认为你得到的错误是编译器错误,而不是运行时错误。

// ./constants.d.ts
declare module "constants" {
  // ... export whatever
  export interface IConstant {
    root_dir: string;
    api_dir: string;
  }
}

否则您的系统配置看起来没问题。如果您想避免在任何地方编写文件扩展名,可以使用defaultJSExtensions = true配置选项。

答案 1 :(得分:0)

我认为您应该使用明确的SystemJS API来注册您的模块。在你的def update item = Item.find(params[:id]) item.update_attributes(item_params) respond_with item end 文件中,有类似的东西:

app/constants.js