如何在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文件转换为模块,以便我可以随时导入它而不提供相对路径?
答案 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