我通过angular2-seed使用Angular2(使用SystemJS)并尝试加载moment-timezone并专门使用moment.tz.guess()
。
我通过以下方式导入:
import * as moment from 'moment-timezone';
当我这样做时,我的浏览器出现以下错误:
GET /node_modules/moment-timezone/data/packed/latest.json.js 404 (Not Found)
anuglar2-seed使用defaultJSExtensions
,我认为这是为什么添加了错误的.js
,所以我想我可以在moment-timezone
中关闭tools/config/project.config.ts
这样:
this.SYSTEM_BUILDER_CONFIG.packages['moment-timezone'] = {
defaultExtension: false
//I have also tried:
map: {
'/node_modules/moment-timezone/data/packed/latest.json.js': '/node_modules/moment-timezone/data/packed/latest.json',
'/node_modules/moment-timezone/data/packed/latest.json': '/node_modules/moment-timezone/data/packed/latest.json'
}
};
但是,这不起作用。我做错了什么?
答案 0 :(得分:8)
问题是,除非你告诉SystemJS你想要使用moment-timezone-with-data-2010-2020.min.js
文件,否则它会默认加载moment/index.js
,这需要tz数据。
以下是正确配置和使用的步骤:
npm install moment moment-timezone --save
和npm install @types/moment @types/moment-timezone --save-dev
在我的组件中,我import * as moment from 'moment-timezone';
。
...
packages: {
'moment-timezone': {
main: 'builds/moment-timezone-with-data-2010-2020.min.js',
defaultExtension: 'js'
}
}
然后,您可以使用console.log(moment.tz.guess());
对于angular2-seed,您可以这样做:
project.config.ts
:
...
constructor() {
this.NPM_DEPENDENCIES = [
...this.NPM_DEPENDENCIES,
{src: 'moment', inject: 'libs'},
{src: 'moment-timezone/builds/moment-timezone-with-data-2010-2020.min.js', inject: 'libs'},
];
...
const mtzc = {
main: 'builds/moment-timezone-with-data-2010-2020.min.js',
defaultExtension: 'js'
};
this.SYSTEM_BUILDER_CONFIG.packages['moment-timezone'] = mtzc;
this.SYSTEM_CONFIG_DEV.packages['moment-timezone'] = mtzc;
}