ব্রাউজারে ES6 মডিউল: অপ্রচলিত সিনট্যাক্স এরর: অপ্রত্যাশিত টোকেন আমদানি


86

আমি ES6 (ECMAScript 6) এ নতুন এবং আমি ব্রাউজারে এর মডিউল সিস্টেমটি ব্যবহার করতে চাই । আমি পড়লাম ES6 ফায়ারফক্স এবং ক্রোম দ্বারা সমর্থিত, তবে আমি ব্যবহার করে নিম্নলিখিত ত্রুটি পাচ্ছিexport

Uncaught SyntaxError: Unexpected token import

আমার কাছে একটি পরীক্ষা। Html ফাইল রয়েছে

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

এবং একটি test.js ফাইল

'use strict';

class Test {

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

export Test;    

কেন?


ES6 মডিউলগুলি এখনও ব্রাউজারে সমর্থিত নয়। এছাড়াও আপনি এখনও কোনও স্ক্রিপ্ট লোড করছেন, মডিউলটি নয়।
বার্গি

4
আমি এখনও স্ক্রিপ্ট এবং মডিউলটির মধ্যে পার্থক্য বুঝতে পারি না
সিডারউইন


20
আমি যে গুরুত্বপূর্ণ অংশটি লক্ষ্য করেছি তা হ'ল <script type="module"></script>আপনি এটি যুক্ত করেছেন তা নিশ্চিত করা অন্যথায় আপনি ত্রুটিটি পেয়ে যাবেন। আমি ক্রমাগত দেওয়ালে মাথা <script>import ... </script>ঠেকছিলাম যে ক্রোম এখন পতাকা ছাড়াই ES6 মডিউল সমর্থন করতে বলেছে, তখন আমি লক্ষ্য করেছি যে টাইপ অ্যাট্রিবিউটটি ব্রাউজারে নির্দিষ্ট করার জন্য এটি একটি ES6 মডিউল, যা ছাড়াই আপনি ঠিক পান ত্রুটি.
ইমানুয়েল মাহুনি

4
আমি ক্রোম using৮ ব্যবহার করছি, আমরা যখন থেকে আমদানি * ব্যবহার করি তখনও আমি এই ত্রুটিটি দেখতে পাই
ইন্টিগ্রেশন ২

উত্তর:


66

অনেক আধুনিক ব্রাউজার এখন ES6 মডিউল সমর্থন করে। যতক্ষণ আপনি আপনার স্ক্রিপ্টগুলি আমদানি করেন (আপনার অ্যাপ্লিকেশনটিতে প্রবেশের পয়েন্ট সহ) <script type="module" src="...">এটি কাজ করবে।

কটাক্ষপাত caniuse.com আরো বিস্তারিত জানার জন্য: https://caniuse.com/#feat=es6-module


53

আপনি গুগল ক্রোম বিটা (61) / ক্রম ক্যানারিতে ES6 মডিউল চেষ্টা করতে পারেন।

পল আইরিশ দ্বারা টোডো এমভিসি-র রেফারেন্স বাস্তবায়ন - https://paulirish.github.io/es-modules-todomvc/

আমি বেসিক ডেমো করেছি -

//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>

আশা করি এটা সাহায্য করবে!


33
এটা ঠিক ... আমি যে গুরুত্বপূর্ণ অংশটি লক্ষ্য করেছি তা হ'ল <script type="module"></script>আপনি এটি যুক্ত করেছেন তা নিশ্চিত করে নিন অন্যথায় আপনি ত্রুটিটি পেয়ে যাবেন। আমি ক্রমাগত দেওয়ালে মাথা ঠেকিয়ে যাচ্ছিলাম <script>import ... </script>জেনে বুঝে যে ক্রোম এখন পতাকা ছাড়াই ইএস 6 মডিউল সমর্থন করতে বলেছে, তখন আমি লক্ষ্য করেছি যে টাইপ বৈশিষ্ট্যটি ব্রাউজারে নির্দিষ্ট করার জন্য প্রয়োজন যে এটি একটি ES6 মডিউল।
ইমানুয়েল মাহুনি

4
message "বার্তা": "আনকাচড সিনট্যাক্স এরর: অপ্রত্যাশিত টোকেন {", "ফাইলের নাম": " stacksnippets.net/js ", "লিনেনো": 24, "কলনো": 8}
জুলু

4
উপরে আপনার কোড স্নিপেট চালিয়ে আমি ত্রুটি পেয়েছি, ক্রোম ভি 67 ব্যবহার করুন, কেন?
huggw

@hoogw স্ট্যাকওভারফ্লো যুক্ত করেছে যে রান কোড স্নিপেট স্বয়ংক্রিয়ভাবে। এই কোডটি যেমন হয় তেমন কার্যকর করা যায় না। আপনাকে কোডটি অনুলিপি করতে হবে index.html এ এবং আলাদা করে .js ফাইল উপরের মত দেখানো হয়েছে এবং ব্রাউজারে চেষ্টা করতে হবে!
রূপেশ রেড্ডি

দরকারী উত্তর ধন্যবাদ। আমি আপনার জন্য স্নিপেট রানার অপসারণ। (আমি যেমন দেখেছি স্ট্যাকওভারফ্লো স্নিপেটগুলির একাধিক jsউত্স থাকতে পারে না )।
মীর-ইসমাইলি

25

দুর্ভাগ্যক্রমে, মডিউলগুলি এখনই অনেক ব্রাউজার দ্বারা সমর্থিত নয়।

এই বৈশিষ্ট্যটি এই সময়ে কেবল নেটিভভাবে ব্রাউজারগুলিতে প্রয়োগ করা শুরু। এটি টাইপস্ক্রিপ্ট এবং ব্যাবেল এবং রোলআপ এবং ওয়েবপ্যাকের মতো বান্ডিলকারীগুলিতে অনেকগুলি ট্রান্সিলারগুলিতে প্রয়োগ করা হয়।

এমডিএন- তে পাওয়া গেছে


আমি পড়লাম এই বৈশিষ্ট্যটি একটি সফ্ট প্রশ্নে প্রয়োগ করা হয়েছিল, তবে এমএমডিএন উত্সটি আসলে আরও নির্ভরযোগ্য।
সিডারউইন

নিম্নলিখিত লিঙ্ক অনুসারে ক্রোম 61 এর আমদানি সমর্থন করবে - এটি হয় না। মাঝারি
মার্চ

4
আপনার স্ক্রিপ্ট ট্যাগে আপনাকে টাইপ = "মডিউল" যুক্ত করতে হবে।
স্মুথজির

10

এটি আমার এমজেএস স্ক্রিপ্টে যুক্তtype="module" করার জন্য কাজ importকরেছিল:

<script type="module">
import * as module from 'https://rawgit.com/abernier/7ce9df53ac9ec00419634ca3f9e3f772/raw/eec68248454e1343e111f464e666afd722a65fe2/mymod.mjs'

console.log(module.default()) // Prints: Hi from the default export!
</script>

ডেমো দেখুন: https://codepen.io/abernier/pen/wExQaa

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.