2015-10-11 8 views
1

Я использую ES6 через JSPM + SystemJS + трейсер согласно JSPM учебнику.ES6 через ошибку JSPM в Firefox, Edge, Вивальди, но работает в Chrome, Opera

Все работает отлично в Chrome и Opera, однако консоль размещает различные ошибки в других браузерах.

Firefox: SyntaxError: class is a reserved identifier, uncaught exception: SyntaxError: class is a reserved identifier

Край: SCRIPT1002: Syntax error, Potentially unhandled rejection [2] Syntax error

Вивальди: Unexpected token =>

SystemJSreadme состояния, что он работает даже IE8 +.

Мои jspm.config.js:

System.config({ 
    baseURL: "/", 
    defaultJSExtensions: true, 
    transpiler: "traceur", 
    babelOptions: { 
    "optional": [ 
     "runtime", 
     "optimisation.modules.system" 
    ] 
    }, 
    paths: { 
    "github:*": "jspm_packages/github/*", 
    "npm:*": "jspm_packages/npm/*" 
    }, 
    shim: { 
    "packages": { 
     "assets/js/lib/tabs": { 
     "main": "tabby", 
     "format": "global", 
     "deps": "jquery", 
     "exports": "$.tabby" 
     }, 
     "assets/js/lib/select": { 
     "main": "selectify", 
     "format": "global", 
     "deps": "jquery", 
     "exports": "$.selectify" 
     } 
    } 
    }, 

    map: { 
    "babel": "npm:[email protected]", 
    "babel-runtime": "npm:[email protected]", 
    "core-js": "npm:[email protected]", 
    "jquery": "github:components/[email protected]", 
    "jquery-mask-plugin": "npm:[email protected]", 
    "jquery-validation": "github:jzaefferer/[email protected]", 
    "selectify": "assets/js/lib/select", 
    "tabby": "assets/js/lib/tabs", 
    "traceur": "github:jmcriffey/[email protected]", 
    "traceur-runtime": "github:jmcriffey/[email protected]", 
    "github:jspm/[email protected]": { 
     "assert": "npm:[email protected]" 
    }, 
    "github:jspm/[email protected]": { 
     "process": "npm:[email protected]" 
    }, 
    "github:jspm/[email protected]": { 
     "util": "npm:[email protected]" 
    }, 
    "github:jzaefferer/[email protected]": { 
     "jquery": "github:components/[email protected]" 
    }, 
    "npm:[email protected]": { 
     "util": "npm:[email protected]" 
    }, 
    "npm:[email protected]": { 
     "process": "github:jspm/[email protected]" 
    }, 
    "npm:[email protected]": { 
     "fs": "github:jspm/[email protected]", 
     "process": "github:jspm/[email protected]", 
     "systemjs-json": "github:systemjs/[email protected]" 
    }, 
    "npm:[email protected]": { 
     "util": "github:jspm/[email protected]" 
    }, 
    "npm:[email protected]": { 
     "assert": "github:jspm/[email protected]" 
    }, 
    "npm:[email protected]": { 
     "inherits": "npm:[email protected]", 
     "process": "github:jspm/[email protected]" 
    } 
    } 
}); 

И package.json:

{ 
    "name": "project_name", 
    "version": "1.0.0", 
    "description": "project_description", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "project_author", 
    "license": "ISC", 
    "devDependencies": { 
    "glob": "^5.0.15", 
    "gulp": "^3.9.0", 
    "gulp-autoprefixer": "^3.0.2", 
    "gulp-concat-css": "^2.2.0", 
    "gulp-imagemin": "^2.3.0", 
    "gulp-jspm": "^0.3.2", 
    "gulp-less": "^3.0.3", 
    "gulp-minify-css": "^1.2.1", 
    "gulp-notify": "^2.2.0", 
    "gulp-rename": "^1.2.2", 
    "imagemin-pngquant": "^4.2.0", 
    "jspm": "^0.16.11" 
    }, 
    "jspm": { 
    "configFile": "jspm.config.js", 
    "dependencies": { 
     "jquery": "github:components/[email protected]^2.1.4", 
     "jquery-mask-plugin": "npm:[email protected]^1.13.4", 
     "jquery-validation": "github:jzaefferer/[email protected]^1.14.0" 
    }, 
    "devDependencies": { 
     "babel": "npm:[email protected]^5.8.24", 
     "babel-runtime": "npm:[email protected]^5.8.24", 
     "core-js": "npm:[email protected]^1.1.4", 
     "traceur": "github:jmcriffey/[email protected]", 
     "traceur-runtime": "github:jmcriffey/[email protected]" 
    } 
    } 
} 

Отчаявшись решить эту ситуацию, как я понимаю, что там может быть много причин для этого. Возможно, кто-то сталкивается с подобной проблемой с этой настройкой.

+0

Похоже, что ваши классы не транслируются в ES5 с помощью трассировщика. – nils

+0

Почему ваш конфиг упоминает как 'babel' _and_' traceur'? – loganfsmyth

+0

@loganfsmyth: это в основном для тестовых целей, поскольку я пытался переключить транспилер. – Nevertheless

ответ

2

Поставлено.

Это было связано с одним из плагинов, который был предусмотрен в прокладке jspm.config.js. Плагин использовал обозначение Immediately-Invoked Arrow Function и слово class без какой-либо директивы по экспорту, и, таким образом, плагин планки не был переполнен в ES5.

Итак, вместо классов ES6 в сторонних библиотеках (плагины плагина) он должен быть построен с простым прототипным наследованием.

Потратьте меня на несколько часов, чтобы это узнать.

 Смежные вопросы

  • Нет связанных вопросов^_^