typescript - Använda Rollup för Angular 2:s AoT-kompilator och importera Moment.js
Jag försöker följa den officiella AoT-guiden för Angular 2, och jag använder Moment.js i min applikation. Moment.js finns i min packages.json-fil, och jag använder version 2.15.0. Hittills har jag importerat det på detta sätt:
import * as moment from 'moment';
Men när jag kommer till delen där jag måste köra rollup, slutar jag med följande fel:
Kan inte anropa ett namnrum ('moment')
Vilket verkar vara relaterat till hur jag importerar moment enligt detta. Så, hur ska jag göra detta? Jag verkar inte kunna importera moment på något annat sätt. Om jag använder
import moment from 'moment'
Jag får kompileringsfelet
Extern modul 'moment' har ingen standardexport
Svar #1
Jag har äntligen lyckats bli av med båda felen. Faktiskt för att undvika:
Kan inte anropa ett namnrum ('moment')
Du behöver använda:
import moment from 'moment'Sedan för att undvika
"moment" har ingen standardexport
Du måste lägga till i din tsconfig.json (compilerOptions):
"allowSyntheticDefaultImports": trueREDIGERA 17/11/2016
Jag var också tvungen att lägga till följande i min rollup-config.js-fil:
plugins: [
nodeResolve({jsnext: true, module: true}),
commonjs({
include: [
'node_modules/rxjs/**',
'node_modules/moment/**'
]
}
}),
uglify()
]
Svar #2
Jag hittade en bra lösning på det aktuella problemet:
Installera ytterligare paketet moment-es6 med npm som tillhandahåller en standardexport. Importera sedan från 'moment-es6' istället för från 'moment':
import moment from 'moment-es6';För användning med systemjs, lägg till följande i systemjs.config.js kartavsnitt:
'moment-es6': 'npm:moment-es6/index.js'lägg till
'node_modules/moment-es6/**'tillinclude-delen i din rollup-konfigurations commonjs-sektion (rollup-plugin-commonjs)
