ECMAScript 6 আমদানি করার সময় "আনকাচড সিনট্যাক্স এরিয়ার: কোনও মডিউলের বাইরে আমদানি বিবৃতি ব্যবহার করতে পারে না"


91

আমি আর্কজিআইএস জেএসপিআই 4.12 ব্যবহার করছি এবং মানচিত্রে সামরিক প্রতীক আঁকতে স্থানিক ইলিউশন ব্যবহার করতে চাই।

আমি যখন milsymbol.jsস্ক্রিপ্টে যুক্ত করব তখন কনসোলটি ত্রুটি ফেরায়

আনকচড সিনট্যাক্স এরির: একটি মডিউলের বাইরে আমদানি বিবৃতি ব্যবহার করতে পারে না `

সুতরাং আমি type="module"স্ক্রিপ্টে যুক্ত করব এবং তারপরে এটি ফিরে আসবে

আনকড রেফারেন্স এরির: এমএস সংজ্ঞায়িত করা হয়নি

আমার কোডটি এখানে:

<link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
<script src="https://js.arcgis.com/4.12/"></script>
<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>

<script>
    require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/MapImageLayer",
        "esri/layers/FeatureLayer"
    ], function (Map, MapView, MapImageLayer, FeatureLayer) {

        var symbol = new ms.Symbol("SFG-UCI----D", { size: 30 }).asCanvas(3);
        var map = new Map({
            basemap: "topo-vector"
        });

        var view = new MapView({
            container: "viewDiv",
            map: map,
            center: [121, 23],
            zoom: 7
        });
    });
</script>

সুতরাং, আমি যুক্ত করব type="module"বা না থাকি , সর্বদা ত্রুটি থাকে। তবে স্পেসিয়াল ইলিউশনসের অফিসিয়াল ডকুমেন্টে type="module"স্ক্রিপ্টটিতে কোনও নেই । আমি এখন সত্যিই বিভ্রান্ত। প্রকারটি যুক্ত না করে কীভাবে তারা এটি পরিচালনা করতে পারে?

মিলসাইম্বল.জেএস ফাইল করুন

import { ms } from "./ms.js";

import Symbol from "./ms/symbol.js";
ms.Symbol = Symbol;

export { ms };

1
মডিউল আমদানি করার সময় আমি একই ত্রুটি পাচ্ছি! আপনি কি কোন সমাধান পান?
জিশান আহমেদ খলিল

আমি এখন ব্রাউজারিফাই ব্যবহার করছি যার মাধ্যমে আমি কোনও মডিউল ব্যবহার করে অন্তর্ভুক্ত করতে পারি require()। এই ভিডিওটি দেখুন
জিশান আহমেদ খলিল

উত্তর:


62

আমি এই ত্রুটিটি পেয়েছি কারণ আমি স্ক্রিপ্ট ট্যাগের মধ্যে টাইপ = "মডিউল" ভুলে গেছি:

<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>

51

দেখে মনে হচ্ছে ত্রুটির কারণগুলি:

1) আপনি বর্তমানে srcডিরেক্টরিটিতে বিল্ট ফাইলের পরিবর্তে ডিরেক্টরিতে উত্স ফাইলটি লোড করছেন dist(আপনি এখানে লক্ষ্যযুক্ত বিতরণকারী ফাইলটি দেখতে পারেন )। এর অর্থ এই যে আপনি একটি অবিকৃত / বান্ডেল মুক্ত রাষ্ট্র দেশীয় সোর্স কোড ব্যবহার করছেন নিম্নলিখিত ত্রুটির জন্য নেতৃস্থানীয়: Uncaught SyntaxError: Cannot use import statement outside a module। প্যাকেজটি বান্ডিল তৈরি করতে রোলআপ ব্যবহার করছে বলে এটি বান্ডিল সংস্করণ ব্যবহার করে ঠিক করা উচিত ।

২) আপনি Uncaught ReferenceError: ms is not definedত্রুটিটি পাওয়ার কারণটি হল মডিউলগুলি স্কোপড, এবং যেহেতু আপনি নেটিভ মডিউলগুলি ব্যবহার করে লাইব্রেরিটি লোড করছেন, msবিশ্বব্যাপী সুযোগে নেই এবং তাই নিম্নলিখিত স্ক্রিপ্ট ট্যাগটিতে অ্যাক্সেসযোগ্য নয়।

দেখে মনে হচ্ছে আপনি লোড করতে সক্ষম হওয়া উচিত distবলে এই ফাইলের সংস্করণ msসংজ্ঞাসমূহ window। পরীক্ষা করে দেখুন এই উদাহরণে গ্রন্থাগার লেখক থেকে কিভাবে এই কাজ করা যেতে পারে একটি উদাহরণ দেখুন।


আপনার জবাবের জন্য আপনাকে ধন্যবাদ, এখন আমি জানি আমার কাছে ভুল ফাইল রয়েছে। আমি ফাইলটির ডিস্ট ভার্শনটি খুঁজছি কিন্তু কোনও ফলশ্রুতি ছাড়াই। ডিস্ট সংস্করণ পাওয়ার কোনও উপায় কি আপনি জানেন? অনেক ধন্যবাদ!
জেরি চেন

এটি এনপিএম ( npmjs.com/package/milsymbol ) এ ডাউনলোডের জন্য উপলব্ধ । বিকল্পভাবে, আপনি রেপো ক্লোন করে এবং বিল্ড স্ক্রিপ্টগুলির মধ্যে একটি চালিয়ে নিজে এটি তৈরি করতে পারেন। দেখে মনে হচ্ছে একটি এএমডি বিল্ড স্ক্রিপ্ট আছে ( github.com/spatialillusions/milsymbol/blob/master/… ) যা আপনাকে requireসরাসরি আপনার কোডের মধ্যে নির্মিত প্যাকেজটিতে অনুমতি দেয় ।
কাই

1
আমি এনপিএমের মাধ্যমে ডাউনলোড করেছি, এখন আমার স্ক্রিপ্ট রয়েছে: <script src="node_modules/milsymbol/dist/milsymbol.js"></script>তবে কনসোলটি এখনও ফিরে আসবে Uncaught ReferenceError: ms is not defined। ইস্যুটি এর msমধ্যে সংজ্ঞায়িত করা হয়নি dist/milsymbol.js, এটি সংজ্ঞায়িত করা হয়েছে src/milsymbol.jsতবে এটি প্রয়োজন type="module"এবং স্কোপ সমস্যা তৈরি করবে। এটির জন্য কি কোন সমাধান আছে. অনেক ধন্যবাদ!
জেরি চেন

5

আমি নিম্নলিখিতটি করে এই সমস্যাটি সমাধান করেছি:

ব্রাউজার থেকে ECMAScript 6 মডিউল ব্যবহার করার সময়, আপনার ফাইলগুলিতে এবং স্ক্রিপ্ট ট্যাগ অ্যাডে .js এক্সটেনশনটি ব্যবহার করুন type = "module"

নোড.জেএস পরিবেশ থেকে ECMAScript 6 মডিউলগুলি ব্যবহার করার সময়, .mjsআপনার ফাইলগুলিতে এক্সটেনশনটি ব্যবহার করুন এবং ফাইলটি চালানোর জন্য এই আদেশটি ব্যবহার করুন:

node --experimental-modules filename.mjs

5

আমি স্ক্রিপ্টে টাইপ = "মডিউল" যোগ না করা পর্যন্ত আমি একই সমস্যার মুখোমুখি ছিলাম। আগে এরকম ছিল

<script src="../src/main.js"></script>

এবং এটি পরিবর্তন করার পরে

<script type="module" src="../src/main.js"></script>

এটি পুরোপুরি কাজ করেছে


1

ত্রুটিটি ট্রিগার করা হয়েছে কারণ আপনি যে ফাইলটি আপনার এইচটিএমএল ফাইলের সাথে সংযুক্ত করছেন সেটি হ'ল ফাইলটির আনবান্ডেল সংস্করণ। সম্পূর্ণ বান্ডিল সংস্করণ পেতে আপনার এটি ইনস্টল করতে হবে npm:

npm install --save milsymbol

এটি আপনার node_modulesফোল্ডারে পুরো প্যাকেজটি ডাউনলোড করে ।

তারপরে আপনি এখানে স্ট্যান্ডএলোন মিনিফায়েড জাভাস্ক্রিপ্ট ফাইল অ্যাক্সেস করতে পারেন node_modules/milsymbol/dist/milsymbol.js

আপনি এটি কোনও ডিরেক্টরিতে করতে পারেন, এবং তারপরে নীচের ফাইলটি কেবল আপনার /srcডিরেক্টরিতে অনুলিপি করুন ।



0

.packএসসিআর-তে <script>ট্যাগটিতে কেবল নাম এবং এক্সটেনশনের মধ্যে যোগ করুন । অর্থাৎ,

<script src="name.pack.js">
// code here
</script>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.