Typescript compiler adds arrow function in web.browser.legacy js file causing error on IE11
araad opened this issue · 0 comments
Issue description
Running an app using angular-compilers in production mode with AOT=1 and ROLLUP=1 causes a syntax error on Internet Explorer 11 preventing the app from loading. The error is related to system.js import function in the section below in the following file (line 276) https://github.com/Urigo/angular-meteor/blob/master/atmosphere-packages/angular-typescript-compiler/index.js
if (this.isRollup) {
const inputFile = inputFiles.find(file => {
const filePath = file.getPathInPackage();
return filePath.startsWith(prefix) &&
filePath.indexOf('imports') === -1;
});
if (inputFile) {
inputFile.addJavaScript({
path: 'system.js',
//
// Problematic line below
//
data: `System = { import(path) { return module.dynamicImport(path) } }`
});
}
}
Steps to reproduce
git clone https://github.com/Urigo/angular-meteor-base myApp
cd myApp
meteor npm install
AOT=1 ROLLUP=1 meteor --production
Expected result
The compiled code in web.browser.legacy should be compatible on older browsers replacing all arrow functions with regular functions
Actual result
One arrow function remains in the js file under .meteor/local/build/programs/web.browser.legacy/
:
"system.js":function(t,e,n){System={import:t=>n.dynamicImport(t)}}
NOTE: The issue seems to be fixed when line 276 in file https://github.com/Urigo/angular-meteor/blob/master/atmosphere-packages/angular-typescript-compiler/index.js
is replaced with the following:
data: `System = { import: function(path) { return module.dynamicImport(path) } }
Environment
OS: Ubuntu 16.04
Meteor version: 1.8.0.1
installed packages
allow-deny@1.1.0
angular-compilers@0.3.2
angular-html-compiler@0.3.2
angular-scss-compiler@0.3.2
angular-typescript-compiler@0.3.2
autoupdate@1.5.0
babel-compiler@7.2.3
babel-runtime@1.3.0
base64@1.0.11
binary-heap@1.0.11
boilerplate-generator@1.6.0
callback-hook@1.1.0
check@1.3.1
ddp@1.4.0
ddp-client@2.3.3
ddp-common@1.4.0
ddp-server@2.2.0
diff-sequence@1.1.1
dynamic-import@0.5.1
ecmascript@0.12.3
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.8.0
ecmascript-runtime-server@0.7.1
ejson@1.1.0
es5-shim@4.8.0
fetch@0.1.0
geojson-utils@1.0.10
hot-code-push@1.0.4
id-map@1.1.0
inter-process-messaging@0.1.0
launch-screen@1.1.1
livedata@1.0.18
logging@1.1.20
meteor@1.9.2
meteor-base@1.4.0
minifier-css@1.4.1
minifier-js@2.4.0
minimongo@1.4.5
mobile-experience@1.0.5
mobile-status-bar@1.0.14
modern-browsers@0.1.3
modules@0.13.0
modules-runtime@0.10.3
mongo@1.6.0
mongo-decimal@0.1.0
mongo-dev-server@1.1.0
mongo-id@1.0.7
npm-mongo@3.1.1
ordered-dict@1.1.0
promise@0.11.1
random@1.1.0
reactive-var@1.0.11
reload@1.2.0
retry@1.1.0
routepolicy@1.1.0
shell-server@0.4.0
socket-stream-client@0.2.2
standard-minifier-css@1.5.2
standard-minifier-js@2.4.0
tracker@1.2.0
underscore@1.0.10
webapp@1.7.2
webapp-hashing@1.0.9
tsconfig.json
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"declaration": false,
"emitDecoratorMetadata": true,
"importHelpers": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es2015"
],
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"skipLibCheck": true,
"stripInternal": true,
"noImplicitAny": false,
"types": [
"@types/meteor",
"@types/mocha",
"@types/chai",
"@types/sinon"
]
},
"include": [
"imports/**/*.ts",
"client/**/*.ts",
"server/**/*.ts"
],
"exclude": [
"node_modules"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}