我有一个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
?
答案 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();
}
}
中对此也有解释