“时刻”没有导出成员“默认”
Posted
技术标签:
【中文标题】“时刻”没有导出成员“默认”【英文标题】:"moment" has no exported member 'default' 【发布时间】:2019-07-12 23:36:48 【问题描述】:我正在使用moment.js
更改我的应用程序的本地日期格式,但收到以下错误:
“moment”在导入库时没有导出成员'default'。
下面是我的代码:
import Inject, Injectable, Optional from '@angular/core';
import DateAdapter, MAT_DATE_LOCALE, MatDateFormats from '@angular/material';
import * as _moment from 'moment';
import default as _rollupMoment, Moment from 'moment';
const moment = _rollupMoment || _moment;
【问题讨论】:
参考this 时刻的版本? @dileepkumarjami “时刻”:“^2.24.0” 您是否尝试添加以上内容? 在尝试@dileepkumarjami的建议后尝试重新运行您的项目,因为在您更改tsconfig.json时这是必要的 【参考方案1】:在tsconfig.json
文件中添加以下行:
"allowSyntheticDefaultImports": true
【讨论】:
【参考方案2】:在 gulpfile.js 的 externals 部分 添加 'moment/moment'
和 'moment'
两者
externals: [
'moment/moment',
'moment'
]
【讨论】:
【参考方案3】:这里有一个完整的解决方案:
第一:
npm install moment --save
npm install @angular/material-moment-adapter
第二:
在你的 package.json 中的依赖项下确保你有以下代码:
"@angular/material-moment-adapter": "^8.2.3",
第三:
在编译器选项下的 tsconfig.json 文件中添加以下内容:
"allowSyntheticDefaultImports": true
第四:
使用以下代码修改您的组件:
import MomentDateAdapter from '@angular/material-moment-adapter';
import DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE from '@angular/material/core';
import * as _moment from 'moment';
import default as _rollupMoment from 'moment';
const moment = _rollupMoment || _moment;
export const MY_FORMATS =
parse:
dateInput: 'LL',
,
display:
dateInput: 'YYYY-MM-DD',
monthYearLabel: 'YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'YYYY',
,
;
@Component(
selector: 'app-newsfeedform',
templateUrl: './newsfeedform.component.html',
styleUrls: ['./newsfeedform.component.css'],
providers: [
provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] ,
provide: MAT_DATE_FORMATS, useValue: MY_FORMATS ,
],
)
第五:
在您的 component.html 文件 datepicker 中,如下代码:
<mat-form-field appearance="outline" fxFlex>
<input matInput [matDatepicker]="publishdate" placeholder="Publish Date"
formControlName="publishdate">
<mat-datepicker-toggle matSuffix [for]="publishdate"></mat-datepicker-toggle>
<mat-datepicker #publishdate></mat-datepicker>
</mat-form-field>
也就是说,您可以自定义 Angular 材质日期选择器任何您想要的格式,只需修改上面给出的格式。
【讨论】:
【参考方案4】:尝试在“compilerOptions”下将"allowSyntheticDefaultImports": true
添加到您的tsconfig.json
【讨论】:
在 tsconfig 中添加是的,但是在 tsconfig 的哪个部分?根?编译器选项?库? 在compilerOptions
部分
添加到tsconfig.app.json
有效,而不是tsconfig.json
【参考方案5】:
您似乎无法导入 moment
如您所见in the documentation,
对于 Typescript 2.x,请尝试在 compilerOptions
中添加 "moduleResolution": "node"
tsconfig.json
文件,然后使用以下任何语法:
import * as moment from 'moment';
import moment = require('moment');
PS:确保你已经安装了moment.js
和npm
:
npm install --save moment
【讨论】:
我对“默认”这个词有疑问。以上是关于“时刻”没有导出成员“默认”的主要内容,如果未能解决你的问题,请参考以下文章