如何在TypeScript中使用momentjs

时间:2018-02-07 08:56:27

标签: angular typescript momentjs

我有一个Angular 5 library项目,我想使用momentjs版本2.20.1

我关注了如何安装TypeScript的moment docs,并且大部分内容都可以正常运行。当我使用ng test测试我的库时,我没有遇到任何问题,但是当我尝试使用npm run build打包lib时,我得到了

  

无法调用命名空间('时刻')

使用import * as moment from 'moment';时。我得到了

  

时刻没有默认导出。

使用import moment from 'moment';并设置"allowSyntheticDefaultImports": true

如何正确安装和使用momentjs

5 个答案:

答案 0 :(得分:3)

尝试...

import * as moment_ from 'moment';
const moment = moment_;

请参阅https://github.com/jvandemo/generator-angular2-library/issues/221

答案 1 :(得分:2)

如果要使用公共变换管道方法,请使用:

public class U_Button : Bunifu.Framework.UI.BunifuThinButton2
{
    protected override void OnClick(EventArgs e)
    {
        MessageBox.Show("Click");
        base.OnClick(e);
    }
}

答案 2 :(得分:2)

我通过导入moment解决了这个问题(感谢 @adejones

import * as momentNs from 'moment';
const moment = momentNs;

导致成功构建。但是我收到了错误

  

时刻不是一个功能

从另一个Angular 5应用程序使用我的库时。我通过添加

来解决了这个问题
"lib": {
    "externals": {
        "moment": "moment"
    }
}

到我的Angular 5库中的ng-package.json并添加了

"dependencies": {
    "moment": "2.20.1"
}

到我的Angular 5应用的package.json

答案 3 :(得分:0)

https://github.com/moment/moment/issues/2608#issuecomment-170739817

felix在这里提到-供TypeScript使用

import moment from 'moment/src/moment';

答案 4 :(得分:0)

您只需将momentjs添加到您的package.json依赖关系中即可:

"dependencies": {
    ...
    "moment": "2.20.1",
    ...
}

然后可以按以下方式使用矩:

import * as moment from "moment";

export class DateThingy {

     public getDate(): moment.Moment { 
        return moment();
     }
}

额外导入

或者您甚至可以为输入额外导入

import { Moment } from 'moment'; // Import the moment typings
import * as moment from 'moment'; // Import the moment functions (and typings)

然后您可以将其用作:

export class DateThingy {
     public getDate(): Moment { 
        return moment();
     }
}

this question

中对此也有解释