2017-01-18 24 views
15

Jestem nowy ES6 (ECMAScript 6) i chciałbym wykorzystać swoje system modułowy w przeglądarce. Czytałem ES6 jest obsługiwana przez Firefoksa i Chrome, ale ja dostaję następujący błąd przy użyciu exportES6 w przeglądarce: Uncaught SyntaxError: Nieoczekiwany token import

Uncaught SyntaxError: Unexpected token import

Mam plik

<html> 
    <script src="test.js"></script> 
<body> 
</body> 
</html> 

test.html i test.js plik

'use strict'; 

class Test { 

    static hello() { 
     console.log("hello world"); 
    } 
} 

export Test;  

Dlaczego?

+0

Moduły ES6 * nie są jeszcze obsługiwane w przeglądarce. Ponadto wciąż ładujesz skrypt, a nie moduł. – Bergi

+2

Nadal nie rozumiem różnicy między skryptem a modułem – cdarwin

+0

Zobacz [tutaj] (http://stackoverflow.com/a/39652842/1048572) – Bergi

Odpowiedz

14

Niestety, obecnie moduły nie są obsługiwane przez wiele przeglądarek.

This feature is only just beginning to be implemented in browsers natively at this time. It is implemented in many transpilers, such as TypeScript and Babel, and bundlers such as Rollup and Webpack.

Znalezione na MDN

+0

Czytałem, że ta funkcja została zaimplementowana w pytaniu Sof, ale źródło MDN jest w rzeczywistości bardziej niezawodne. – cdarwin

+0

Zgodnie z poniższym linkiem Chrome 61 powinien obsługiwać importowanie - nie działa. https://medium.com/dev-channel/es6-modules-in-chrome-canary-m60-ba588dfb8ab7 – Marc

16

Można spróbować ES6 modułów w Google Chrome Beta (61)/Chrome Canary.

referencyjny Realizacja ToDo MVC Paula Irlandczyków - https://paulirish.github.io/es-modules-todomvc/

mam podstawowy demo -

//app.js 
 
import {sum} from './calc.js' 
 

 
console.log(sum(2,3)); 
 

 
//calc.js 
 
let sum = (a,b) => { return a + b; } 
 

 
export {sum};
<html> 
 
    <head> 
 
     <meta charset="utf-8" /> 
 
    </head> 
 

 
    <body> 
 
     <h1>ES6</h1> 
 
     <script src="app.js" type="module"></script> 
 
    </body> 
 

 
</html>

Nadzieję, że to pomaga!

+9

To prawda ... Ważną częścią, którą zauważyłem, jest moduł '' '' '' upewnij się, że dodajesz, że w przeciwnym razie dostaniesz ten błąd. Waliłem głową o ścianę ciągle wykonując '' '' '' świadomie, że chrom ma teraz wspierać moduły ES6 bez flag, wtedy zauważyłem, że atrybut type był potrzebny do określenia przeglądarce, że to jest moduł ES6. –

Powiązane problemy