মোচা পরীক্ষা চলাকালীন বাবেল অপ্রত্যাশিত টোকেন আমদানি


95

অন্যান্য প্রাসঙ্গিক প্রশ্নগুলির প্রস্তাবিত সমাধানগুলি যেমন .belrc এ সঠিক প্রিসেটগুলি (es2015) সহ ইতিমধ্যে আমার প্রকল্পে প্রয়োগ করা হয়েছে।

আমার দুটি প্রকল্প রয়েছে (তাদের এ এবং বি কল করুন) যা উভয়ই ES6 মডিউল সিনট্যাক্স ব্যবহার করে। প্রজেক্ট এ এ, আমি প্রজেক্ট বি আমদানি করছি যা এনপিএম এর মাধ্যমে ইনস্টল করা হয় এবং নোড_মডিউল ফোল্ডারে থাকে। আমি যখন প্রকল্প A এর জন্য আমার পরীক্ষার স্যুটটি চালাচ্ছি তখন ত্রুটিটি পাচ্ছি:

সিনট্যাক্স এরর: অপ্রত্যাশিত টোকেন আমদানি

যা প্রকল্প বি থেকে এই কথিত ভ্রান্ত কোডের পূর্বে রয়েছে:

(ফাংশন (রফতানি, প্রয়োজনীয়, মডিউল, __ ফাইলনেম, __dirname) history 'ইতিহাস / lib / createBrowserHistory' থেকে createBrowserHistory আমদানি করুন;

আইআইএফ এনপিএম বা সম্ভবত বেবেল সম্পর্কিত বলে মনে হচ্ছে যেহেতু আমার উত্স ফাইলটিতে কেবল "ইতিহাস / lib / createBrowserHistory" থেকে ক্রিয়েট ব্রাউজার হিস্টরি রয়েছে; প্রকল্প বি এর পরীক্ষার স্যুইটে ইউনিট পরীক্ষা ভাল চলছে, এবং যদি আমি প্রজেক্ট বি কে নির্ভরতা হিসাবে অপসারণ করে থাকি প্রজেক্ট এ, তখন আমার পরীক্ষার স্যুট (এখনও অভ্যন্তরীণ প্রকল্পের মডিউলগুলির জন্য এস 6 আমদানি ব্যবহার করছে) ঠিক ঠিক কাজ করে।

সম্পূর্ণ স্ট্যাক ট্রেস:

 SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Module._extensions..js (module.js:405:10)
    at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:138:7)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (actionCreators.js:4:17)
    at Module._compile (module.js:398:26)
    at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
    at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/ProjectA/src/components/core/wrapper/wrapper.js:28:23)
    at Module._compile (module.js:398:26)
    at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
    at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/ProjectA/src/components/core/wrapper/wrapperSpec.js:15:16)
    at Module._compile (module.js:398:26)
    at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
    at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at /ProjectA/node_modules/mocha/lib/mocha.js:219:27
    at Array.forEach (native)
    at Mocha.loadFiles (/ProjectA/node_modules/mocha/lib/mocha.js:216:14)
    at Mocha.run (/ProjectA/node_modules/mocha/lib/mocha.js:468:10)
    at Object.<anonymous> (/ProjectA/node_modules/mocha/bin/_mocha:403:18)
    at Module._compile (module.js:398:26)
    at Object.Module._extensions..js (module.js:405:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:430:10)
    at startup (node.js:141:18)
    at node.js:980:3

এখানে প্যাকেজ.জসন থেকে আমার পরীক্ষার কমান্ডটি দেওয়া হয়েছে:

"test": "mocha --compilers js:babel-core/register '+(test|src)/**/*Spec.js'"

এই স্ট্যাকওভারফ্লো পোস্টটি অনুরূপ তবে কমান্ড লাইনটি ব্যবহারের জন্য আমার কোনও সমাধান দেয় না: নবেড_মডিউলগুলি বাবেল সহ একটি মডিউল আমদানি করুন কিন্তু ব্যর্থ হয়েছে


4
আপনি যদি এনএমপি তে কোনও মডিউল বিতরণ করছেন তবে আপনার কেবলমাত্র সেই মডিউলটির ট্রান্সপ্লার্ড সংস্করণ বিতরণ করা উচিত।
লগানফস্মিথ

এই প্রকল্পটি খুব হালকা ওজনযুক্ত। এটি বেশিরভাগ আমার নিজের ব্যবহারের জন্য, বা অন্যদের যদি এটির জায়গায় স্থানান্তর প্রক্রিয়া থাকে তবে এটি সমর্থন করতে পারে intended আমি এই নির্ভরতাগুলিতে "ভ্যানিলা এস 6" অর্জন করার চেষ্টা করছি।
থিংকিংইনিবিটস

4
আমি মনে করি আপনি প্যাকেজ.জসনে বাবেলটি কনফিগার করতে ভুলে গেছেন। এগুলিকে আপনার প্যাকেজটিতে জুড়ুন son "বাবেল": {"প্রিসেট": ["এস ২০১৫"]}
জ্যাকব

4
দ্রষ্টব্য: ডকুমেন্টেশন অনুসারে --compilers প্রয়োজনীয় নয়, --require babel-registerপরিবর্তে এটি ব্যবহার করা উচিত: "যদি আপনার ES6 মডিউলগুলিতে এক্সটেনশন থাকে .js, আপনি এনপিএম ইনস্টল করতে পারেন - সেভ-ডেভ বাবেল-রেজিস্টার এবং মোচা - প্রয়োজনীয় ব্যাবেল-রেজিস্টার ব্যবহার করতে পারেন; যদি আপনার কোনও ফাইল এক্সটেনশান নির্দিষ্ট করতে হয় তবেই প্রয়োজনীয় ""
শেষের দিকে

4
অবশেষে আমি "babel":{"presets": ["es2015"]}এটি ব্যবহার করে কাজটি করতে সক্ষম হয়েছি এটি আমি শেষ জিনিসটি হারিয়েছিলাম!
ব্র্যান্ডন

উত্তর:


81

বাবেলের জন্য <6

এই সমস্যাটি সমাধানের সবচেয়ে সহজ উপায় হ'ল:

  1. npm install babel-preset-es2015 --save-dev
  2. যোগ .babelrcবিষয়বস্তু সঙ্গে প্রকল্পের রুট করুন:

    {
     "presets": [ "es2015" ]
    }
    

নিশ্চিত হয়ে নিন যে আপনি "- কম্পাইলার জেএস: ব্যাবেল-কোর / রেজিস্টার" পরামিতি দিয়ে মোচা চালাচ্ছেন।

বাবেল 6/7 + এর জন্য

  1. npm install @babel/preset-env --save-dev
  2. যোগ .babelrcবিষয়বস্তু সঙ্গে প্রকল্পের রুট করুন:

    {
     "presets": [ "@babel/preset-env" ]
    }
    

নিশ্চিত হয়ে নিন যে আপনি --compilers js:babel-register(বাবেল 6) বা --compilers js:@babel/register(বাবেল 7) প্যারামিটার দিয়ে মোচা চালাচ্ছেন

মোচা সংস্করণ 7 বা তার পরে, যথাক্রমে --require babel-registerবা ব্যবহার করুন --require @babel/register



4
@ কোলোক এটি কাজ করে। আরও ভাল হলেও, mocha.opts/ টেস্ট ডিরেক্টরি ডিরেক্টরিতে একটি ফাইল তৈরি করুন এবং এটি সেখানে যুক্ত করুন
মার্টিন ডসন

4
এই সমস্ত একসাথে এখনও সাহায্য করে না (কমান্ড-লাইন, mocha.opts নয়)।
কেভ

4
আপনি, es2016 ব্যবহার হট্টগোল মধ্যে es2016 "শুধু প্রনয়ন কি ES2015 করার ES2016 আছে" যাতে আপনি প্রয়োজন মনে রাখা করতে চান, উভয় es2016 এবং আপনার প্রিসেট অ্যারের মধ্যে es2015
prauchfuss

4
--compilersএখন অবচয় করা হয়েছে। --requireপরিবর্তে ব্যবহার করুন।
রোবস

46

মনে হয় একমাত্র সমাধানটি স্পষ্টভাবে অন্তর্ভুক্ত করা:

require('babel-core/register')({
  ignore: /node_modules/(?!ProjectB)/
}); 

একটি পরীক্ষা সহায়ক ফাইলে, এবং এটি আমার পরীক্ষার আদেশে মোচা দিয়ে পাস করুন:

mocha --require ./test/testHelper.js...

চূড়ান্ত সমাধান:

যোগ registerBabel.js : একটি পৃথক ফাইল যার কাজ Babel কোর / রেজিস্টার প্রয়োজন হচ্ছে ...

require('babel-core/register')({
  ignore: /node_modules/(?!ProjectB)/
});

আপনার অ্যাপ্লিকেশনটিও ব্যাবেল -নোডের উপর নির্ভর করে যদি একটি এন্ট্রি.জেগুলি যুক্ত করুন । এটি আপনার es6যুক্ত অ্যাপ্লিকেশনটির জন্য একটি মোড়ক হিসাবে কাজ করে।

require('./registerBabel');
require('./server'); // this file has some es6 imports

এরপরে আপনি আপনার অ্যাপ্লিকেশনটি চালিয়ে যান node entry

মোচা পরীক্ষার জন্য, টেস্টহেল্পার.জেসগুলিকে রান সময়ে ব্যাবেল সাপোর্ট আরম্ভ করার জন্য রেজিস্ট্রারবেল.জে প্রয়োজন হবে।

require('./registerBabel');

এবং সাথে আপনার মোচা পরীক্ষা চালান mocha --require ./testHelper.js '+(test)/**/*Spec.js'

এটি "স্পেস। জেএস" এর মধ্যে "./test" এর মধ্যে শেষ হওয়া যে কোনও ফাইলকে পুনরাবৃত্তিতে পরীক্ষা করবে। আপনার প্রকল্পের চশমাগুলির সাথে একটির সাথে প্যাটার্নটি প্রতিস্থাপন করুন।


4
দেখে মনে হচ্ছে ignoreরেগেক্স কিছুটা দূরে। নোড_মডিউলগুলির ঠিক পরে আমাকে একটি পালিয়ে যাওয়া ব্যাকস্ল্যাশ যুক্ত করতে হয়েছিল: ignore: /node_modules\/(?!ProjectB)/বাবেল-রেজিস্টার ফাইলটি কাজ করার জন্য। অন্যথায় দুর্দান্ত মনে হচ্ছে!
হেল্লাতান

প্রয়োজনীয় বিবৃতিগুলির কারণে এটি আমাদের রোলআপাইফাই ব্যবহার করতে দেয় না। আপনি প্রয়োজনীয় বিবৃতি ব্যবহার না করে এটি করার কোনও উপায় সম্পর্কে জানতে পারবেন?
মাইকস বার্টো 2002

এটি দুর্দান্ত, তবে এমন সরঞ্জামগুলির সম্পর্কে কী যা এই জাতীয় কোড যুক্ত করতে দেয় না এবং আপনার ফাইলগুলি সরাসরি চালাতে চায়। তারপরে আপনি babel-nodeএমনটি ব্যবহার করবেন যা ব্যবহার করে এমন জিনিসকে অনুমতি দেয় না .babelrc
ইভজেনি

4
তোমার দুর্দান্ত! সবে সার্ভার চালানোর সময় বাবেল আমার ইএস 6 কোডটি প্রক্রিয়াজাত করছিল তবে মোচা পরীক্ষা ব্যর্থ হবে। আপনার উত্তর এটি সমাধান করেছে। আমি mocha.opts - কম্পাইলার চেষ্টা করেছিলাম কিন্তু এর ফলে আমদানি বিবৃতি ব্যর্থ হয়েছিল।
এনার্জেটিক পিক্সেল 0

4
আমি এটি কাজ করতে পারিনি, তবে এটি প্রমাণিত হয়েছে যে আমার বাবেলআরসিআরও বাড়ানো দরকার: @ `(('@ বাবেল / রেজিস্টার') প্রয়োজন ({প্রসারিত: './babelrc', উপেক্ষা করুন: [/ নোড_মডিউলস \ / (?! প্রকল্পবি) /]}); `` `
টিগারটু

26

নিশ্চিত যে আপনার এই সমস্যাটি হবে, আপনি ইএস 6 ব্যবহার করছেন যা মোচা জানেন না

সুতরাং আপনি বাবেল ব্যবহার করছেন তবে আপনি এটি আপনার পরীক্ষায় ব্যবহার করবেন না ...

কয়েকটি সমাধান:

উ: আপনি যদি এনপিএম ব্যবহার করে চালাচ্ছেন

"test": "mocha --compilers js:babel-core/register test*.js"

বি। আমি ব্যবহার করছি

"test": "./node_modules/.bin/mocha --compilers js:babel-core/register **/*spec.jsx"

সি ক্লাই থেকে:

মোচা - কম্পাইলার্স জেএস: ব্যাবেল-কোর / রেজিস্টার পরীক্ষা * .js

আপনি http://www.pauleveritt.org/articles/pylyglot/es6_imports/ এ আরও পড়তে পারেন


4
তোমাকে অনেক ধন্যবাদ! আমি
কম্পাইলার

4
আমি ইতিমধ্যে এটি করছিলাম ... আপনি কি প্রাথমিক প্রশ্নটি পড়েছেন?
থিংকিংইনবিটস

4
@ থিংকিংইনবিটস আপনি কী ব্যবহার করে শেষ করেছেন, কীভাবে আপনি (যদি আপনি থাকেন) সমস্যাটি সমাধান করলেন? আমি এখানে মারাত্মক সমস্যায়
পড়ছি

--compilersএখন --require
অবহেলিত

23

আমি একই ইস্যু মধ্যে দৌড়ে। স্ট্যাকওভারফ্লো এবং এর বাইরেও অন্যান্য সমাধানের চেষ্টা করে প্যাকেজটিতে এই সাধারণ কনফিগারেশন যুক্ত করে আমার জন্য এটি করেছেন:

  "babel": {
    "presets": [
      "es2015"
    ]
  }

আমার সমস্ত ES6 আমদানি তার পরে কাজ করেছিল। যাইহোক, ওয়েবপ্যাককনফিগ.জেএস এর ভিতরে আমার এই একই কনফিগারেশন ছিল, তবে দৃশ্যত এটি মোচা পরীক্ষার জন্য এটির কাজ করার একমাত্র উপায় ছিল।

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


আমার একটি .babelrc ফাইলটি বানানটি ভুল ছিল, সুতরাং এটি প্রাথমিকভাবে কাজ করছে না। এই সমাধানটি কাজ করে এবং এটি প্রস্তাবিত সমাধান। {: [ "Es2015"] "প্রিসেট"} আপনার প্রকল্পের একটি .babelrc ফাইল তৈরি করুন এবং যোগ
AfDev

14

{"modules": false}আমার .babelrc ফাইলটিতে এটি ছিল :

"presets": [
    ["es2015", {"modules": false}],
    "stage-2",
    "react"
]

যা নিক্ষেপ করছিল

অপ্রত্যাশিত টোকেন আমদানি

একবার আমি এটি সরিয়ে ফেললাম, মোচা সফলভাবে দৌড়ে গেল।


এটি কারাগারগুলির জন্য ওয়েবপ্যাকার দ্বারা উত্পাদিত হয়েছিল: [`` "প্রিসেট": [["এনভি", mod "মডিউল": মিথ্যা, "লক্ষ্যগুলি": brow "ব্রাউজারগুলি": "> 1%", "উগলিফাই": সত্য}, "UseBuiltIns": সত্য}], "প্রতিক্রিয়া" `` `আমি একবার মডিউলগুলি সরিয়ে ফেললে তা আমার পক্ষে কাজ করে।
ফাঁকাওয়াল

এটি আমার সমস্যার সমাধান করেছে যখন সার্কেলসিআই আমার জেস্ট ইউনিট পরীক্ষা চালাতে ব্যর্থ হয়েছিল এবং আমাকে অপ্রত্যাশিত টোকেন আমদানি ত্রুটি দিয়েছিল। +1!
ক্যান্ডলজ্যাক

এটা আমার জন্য এটি। রেলস, ওয়েবপ্যাকার, ইত্যাদি ... ধন্যবাদ!
খালি ওয়াল

8

আমার একই সমস্যা ছিল এবং বাচাকে মোকার সাথে সংহত করার জন্য বাবেল ডকুমেন্টেশনগুলি পড়ে এটি ঠিক করেছি :

{
  "scripts": {
    "test": "mocha --compilers js:babel-register"
  }
}

মোচা ও বাবেলের কোন সংস্করণের জন্য?
অগ্নিয়ান দিমিত্রভ

আমার বাবেল সংস্করণগুলি 6.26.0বাদে "babel-preset-env": "1.6.0"এবং "mocha": "3.5.3"
ভ্যানটল

অদ্ভুত। এটি আমার সমস্যার সমাধান করেছিল এবং এটি আমার ক্ষেত্রে খাঁটি পাঠ্য-দস্তাবেজ ছিল।
অগ্নিয়ান দিমিত্রভ

6

বাবেল 7 এবং মোচা 4 ব্যবহার করার জন্য কারও কারও কাছে প্যাকেজের নাম কিছুটা বদলে গেছে এবং গৃহীত উত্তরটি কিছুটা পুরানো। আমার যা করতে হবে তা হ'ল:

npm install @babel/register --saveDev

এবং --require @babel/registerপরীক্ষার লাইনে যুক্ত করেpackage.json

"test": "./node_modules/mocha/bin/mocha --require @babel/polyfill --require @babel/register './test/**/*.spec.js'"

দ্য @babel/polyfillসংশোধন করা হয়েছে অ্যাসিংক্রোনাস ইনপুট / অপেক্ষায় রয়েছেন কার্যকারিতা মত কিছু জিনিসের জন্য আপনি ঐ ব্যবহার করা ঘটতে পারেন।

আশা করি যে কাউকে সাহায্য করবে :)


4

আমি এখানে আরেকটি ES6 + মোচা + বাবেল কনফিগারেশন উত্তর যুক্ত করছি, বর্তমান জুন '19-এর হিসাবে উত্তর (উত্তর / কমেন্টের তারিখগুলি দেখুন)। মোচা --compilerপতাকাটিকে অবমূল্যায়ন করেছে এবং আমি যে সংস্করণটি ব্যবহার করছি তা --no-deprecationপতাকা, সিএফ সহ এমনকি এটি উপলভ্য নয় এটি

মনে রাখবেন যে আমি লিঙ্কযুক্ত পৃষ্ঠাগুলি থেকে সমস্ত প্রাসঙ্গিক বিট অন্তর্ভুক্ত করব না, কারণ মোচা এবং বাবেলের সর্বশেষ সংস্করণগুলির উপর ভিত্তি করে তাদের মধ্যে কেউই আমাকে পরিষ্কার পরীক্ষা বিল্ডে নিয়ে যায়নি; এই উত্তরে এমন পদক্ষেপগুলি অন্তর্ভুক্ত করা উচিত যা আমাকে একটি সফল পরীক্ষা বিল্ডিংয়ে পৌঁছেছে।

এখানে থাকা নির্দেশাবলীর অনুসরণ করে এবং এই উত্তরে এবং এখানে আমি সর্বনিম্ন সর্বশেষ ব্যাবেল যা ব্যবহার হয়েছিল তা ব্যবহার করে ইনস্টল করার চেষ্টা করেছি npm install:

$ npm install --save-dev mocha
$ npm install --save-dev @babel/preset-env

এবং আমি প্যাকেজ.জসনে মোচা অনুরোধটি সামঞ্জস্য করেছি, এরকম:

"scripts": {
    "test": "mocha --compilers js:@babel/register"
}

এর ফলে ত্রুটি হয়েছিল:

× ERROR: --compilers is DEPRECATED and no longer supported.

উপরে হিসাবে, সহায়তা --no-deprecationকরেনি, দয়া করে উপরে লিঙ্কযুক্ত পৃষ্ঠাটি উল্লেখ করুন। সুতরাং এখান থেকে নির্দেশাবলী অনুসরণ করে আমি প্যাকেজ.জসন সামঞ্জস্য করেছি:

"scripts": {
    "test": "mocha --require js:@babel/register"
}

এবং ব্যাবেল মডিউলগুলি সনাক্তকরণ সম্পর্কিত ত্রুটিগুলি দেখতে শুরু করে:

× ERROR: Cannot find module '@babel/register'

এই অগ্রগতি না হওয়া পর্যন্ত আমি বাবেল প্যাকেজগুলি ইনস্টল করতে শুরু করেছি started আমি বিশ্বাস করি যে সম্পূর্ণ ইনস্টলটি এমন কিছু:

$ npm install --save-dev @babel/preset-env @babel/register @babel/core

সর্বশেষ পরিবর্তনটি হ'ল প্যাকেজ.জেসনে মোচা অনুরোধটি আপডেট করা, js:উপসর্গটি মুছে ফেলা, এটির মতো:

"scripts": {
    "test": "mocha --require @babel/register"
}

কেন এটি প্রয়োজনীয় তা আমি উত্তর দিতে পারছি না: যদি কেউ এর উত্তর দিতে পারে তবে দয়া করে একটি মন্তব্য দিন এবং আমি আমার উত্তরটি আরও ভাল তথ্যের সাথে আপডেট করব।

শেষ কাজটি আমি প্রজেক্ট ডিরেক্টরিতে একটি বিষয়বস্তু দিয়ে একটি।

{
    "presets" : ["@babel/preset-env"]
}

এটি কী বলেছিল তা আমি স্মরণ করতে পারি না তবে আমি বিশ্বাস করি যে এটি হ'ল মোচা importআমার টেস্ট.জেজে কীওয়ার্ডটি স্বীকৃতি না দেওয়ার বিষয়ে অভিযোগ করতে থাকল was উপরে হিসাবে, যদি কেউ এর উত্তর দিতে পারে তবে দয়া করে একটি মন্তব্য দিন এবং আমি আমার উত্তরটি আরও ভাল তথ্যের সাথে আপডেট করব।


এই মুহুর্তে আমি আমার মোচা পরীক্ষা সফলভাবে চালাতে পারি। আমি বুঝতে পারি যে আমার জ্ঞানের এখানে ফাঁক রয়েছে: আমি প্রচুর উত্পাদন জাভাস্ক্রিপ্ট কোড লিখেছি তবে আমি একটি আপেক্ষিক নোড নুব। যে কেউ এই উত্তরটি যুক্ত করতে আরও বেশি কিছু দেখতে পান, দয়া করে একটি মন্তব্য করুন এবং আমি উত্তরটি উন্নত করব, বা আপনার নিজের আরও ভাল উত্তর ছেড়ে দেব leave
pb2q

3

--compilers অবচয় করা হয়।

আমার সহজ সমাধান:

npm install --save-dev babel-core

এবং প্যাকেজ.জেসনে আপনার পরীক্ষার স্ক্রিপ্টটি এটি যুক্ত করুন:

  "scripts": {
    "test": "mocha --require babel-core/register ./test/**/*.js -r ./test-setup.js"
  },

2

আমি ব্যাবেল 6.XX এর সাথে করণীয় সবচেয়ে সহজ উপায়টি NYC ব্যবহার করা এবং তারপরে একটি helperফাইল যুক্ত করেpckage.json

সুতরাং আমি এখানে ব্যবহার কি

package.json

{
  ....
  "scripts": {
    "test": "nyc mocha --reporter tap 'test/**/*.spec.js'"
  },
  "devDependencies": {
    "babel-cli": "^6.24.0",
    "babel-core": "^6.24.0",
    "babel-loader": "^6.4.0",
    "babel-preset-env": "^1.2.2",
    "babel-preset-es2015": "^6.24.0",
    "babel-preset-react": "^6.23.0",
    "babel-preset-react-hmre": "^1.1.1",
    "babel-preset-stage-2": "^6.22.0",
    "babel-register": "^6.24.0",
    "babel-runtime": "^6.23.0",
    "chai": "^3.5.0",
    "mocha": "^3.2.0",
    "nyc": "^10.1.2",
    "webpack": "^2.3.3",
    "webpack-config": "^7.0.0",
    "webpack-dashboard": "^0.3.0",
    "webpack-dev-server": "^2.4.2"
  },
  "nyc": {
    "all": true,
    "include": [
      "src/**/*.js"
    ],
    "cache": true,
    "require": [
      "./test/helper/registerBabel.js"
    ]
  }
}

babelrc

{
  "presets": [
    "es2015", //remove the {modules: false} it doesn't work with this
    "stage-2"
  ]
}

রেজিস্টারবাবেল.জেএস

/* eslint-disable import/no-commonjs, import/unambiguous */
require('babel-register')();

এখন আপনি আপনার পরীক্ষাগুলিতে বা যেখানে আপনার প্রয়োজন সেখানে এস 6 ব্যবহার করতে সক্ষম হবেন। আমার সব ব্যর্থ হয়;)

তারপরে npm run testযা আগুন জ্বলবেnyc mocha --reporter tap 'test/**/*.spec.js'


2

আমার জন্য কি কাজ করেছে তা এখানে। --compilersপতাকাটি ব্যবহার করার সময় আমি একটি সতর্কতা পেয়েছি ।

অবচয়করণ সতর্কতা: "- কমপ্লেয়ারগুলি" মুচার ভবিষ্যতের সংস্করণে সরানো হবে; দেখতে https://git.io/vdcSr আরও তথ্যের জন্য

আমি তাই --requireপতাকা সহ এটি প্রতিস্থাপন

"test":  "mocha --require babel-core/register --recursive"

এখানে আমার .babelrc:

{
  "presets": ["env"]
}

আমার package.jsonদেব নির্ভরতা

"devDependencies": {
  "babel-cli": "^6.26.0",
  "babel-preset-env": "^1.7.0",
  "mocha": "^5.2.0",
}

2

আমি এই নির্দেশটি আজ সকালে নিম্নলিখিত নির্দেশাবলীর সাথে সমাধান করেছি

এনপিএম মডিউল ইনস্টল করুন

npm install --save-dev @babel/polyfill
npm install --save-dev @babel/register

প্যাকেজ.জসন :

"scripts": {
    "test": "mocha --require @babel/register --require @babel/polyfill src/DesktopApplication/Tests",
  }

.babelrc

{
  "presets": ["@babel/env"]
}

1

মোচা 4 এর জন্য বাবেল নির্দেশাবলী ব্যবহার করে অফিসারের নিম্নলিখিত নির্দেশাবলীর সাথে আমি আজ সকালে এই সমস্যাটি সমাধান করেছি :

এনপিএম মডিউল ইনস্টল করুন

npm install --save-dev babel-polyfill
npm install --save-dev babel-preset-env
npm install --save-dev babel-register

বা একটি একক আদেশ:

npm i -d babel-polyfill babel-preset-env babel-register

প্যাকেজ.জসন :

"scripts": {
    "test": "mocha --require babel-polyfill --require babel-register"
  }

.babelrc

{
  "presets": ["env"]
}


0

আমি আমার কোডটিতে mochaব্যবহার করার সময় ঠিক একই ত্রুটিটি ইনস্টল করেছি এবং পূরণ importকরেছি। নিম্নলিখিত ক্রিয়াগুলি করার দ্বারা, সমস্যাটি স্থির করা হয়েছিল।

npm install babel-core --save-dev
npm install babel-preset-es2015 --save-dev
npm install babel-preset-stage-0 --save-dev

এবং তারপরে একটি .babelrcফাইল যুক্ত করুন:

{
    "presets": [
        "es2015"
    ]
}

এবং তারপরে mochaএইভাবে চালান :

mocha --compilers js:babel-core/register

-1

আমারও একই সমস্যা ছিল। পরীক্ষা চলাকালীন আমি বুঝতে পারলাম যে আমি আসলে নির্ভরশীল মডিউলগুলি আটকে রাখতে চাই। এটি ইউনিট পরীক্ষার জন্য ভাল এবং সাবমডিউলগুলি রূপান্তরকরণ থেকে বাবেলকে বাধা দেয়। সুতরাং আমি ব্যবহার করেছি proxyquire, যথা:

const proxyquire = require('proxyquire').noCallThru()

const myTestedModule = proxyquire('../myTestedModule', {
    'dependentModule1': { //stubbed module1 },
    'dependentModule2': { //stubbed module2 }
})

এটি একটি মন্তব্য হিসাবে ভাল ফিট।
গজুস

-3

আরও ভবিষ্যতের প্রমাণ সেটিং জন্য

npm install babel-preset-latest --save-dev

এবং .babelrc এ

{
  "presets": [ "latest" ]
}

উল্টোদিকে...

npm install babel-preset-es2015 --save-dev

এবং

{
 "presets": [ "es2015" ]
}

4
আমার ধারণা এই উত্তরটি কার্যত এই প্রশ্নের সাথে সম্পর্কিত নয় .. বা বরং এটি অন্য উত্তরের মন্তব্য হিসাবে যুক্ত করা যেতে পারে
62mkv

@ 62mkv ধন্যবাদ! বাজপাখি হয়ে এই জায়গাটি পরিষ্কার রাখার উপায়।
ফিল হেনরি ম্যাকবুব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.