如何通过 SystemJs 在 Angular2 中使用时刻时区
How to use moment-timezone in Angular2 via SystemJs
我通过 angular2-seed (which uses SystemJS) and trying to load moment-timezone 使用 Angular2 并专门使用 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
的原因,所以我想我可以在 [=17= 中为 moment-timezone
关闭它] 像这样:
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'
}
};
但是,这不起作用。我做错了什么?
问题是,除非您告诉 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;
}
我通过 angular2-seed (which uses SystemJS) and trying to load moment-timezone 使用 Angular2 并专门使用 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
的原因,所以我想我可以在 [=17= 中为 moment-timezone
关闭它] 像这样:
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'
}
};
但是,这不起作用。我做错了什么?
问题是,除非您告诉 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;
}