গ্রান্ট টাস্ক সহ নোড-ইন্সপেক্টর ব্যবহার করা


101

কেউ কি অ্যাপ্লিকেশন ডিবাগিংয়ের জন্য গ্রান্টের সাথে নোড-ইন্সপেক্টর ব্যবহার করেছেন ? যদি তা না হয় তবে গ্রান্ট ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য আপনি কোনও ডিবাগিং সরঞ্জামের প্রস্তাব দিতে পারেন?

আমি একটি সার্ভার সাইড অ্যাপের জন্য নোডেজের সাথে কাজ করছি এবং আমার পৃথক কাজগুলি ব্যবহার করার গ্রান্ট রয়েছে (এটি কারণ ব্যবহারকারীরা পৃথকভাবে কার্য সম্পাদন করতে পারেন)।


কনসোল.লগ আপনার বন্ধু .. আমি নোড-ইন্সপেক্টর অ্যাক্সেস করতে পছন্দ করব তবে আমি মনে করি ডিবাগ সরঞ্জামগুলি ভি 8 এর অংশ নয়। আমি এটি বুঝতে পেরেছি, ডিবাগ সরঞ্জামগুলি তাদের নিজস্ব ডানদিকে একটি ওয়েব অ্যাপ্লিকেশন। এখানে ভুল হলে আমাকে সংশোধন করুন কারণ আমি আপনার চেষ্টাটি করতে চাই।
iancrowther

হ্যাঁ, লগিং সিস্টেম (যার অর্থ কনসোল.লগ বা অন্যান্য ধরণের লগিং মেকানিজম) আমাদের বন্ধু হবে তবে আমার যা প্রয়োজন তা হল একটি ভিন্ন এবং আরও বেশি ডিবাজিযোগ্য উপায়। এতক্ষণে, আমি আমার প্রকল্পের গ্রুণ্টগুলির সাথে কিছু অনুপস্থিত প্রয়োজনীয়তা পেয়েছি সুতরাং আমি এখনই সরিয়ে ফেলেছি এবং নোডেজগুলি এটির নিজের হিসাবে ব্যবহার করছি যাতে আমি এখন নোড-ইন্সপেক্টর ব্যবহার করে ডিবাগ করতে পারি। আমি জানি, এটি সমাধান নয়, তবে এটি কাজ করে। আমি মনে করি, ভবিষ্যতে আমি নোড-ইন্সপেক্টর এবং অন্যান্য সরঞ্জাম / বৈশিষ্ট্য যুক্ত করে আবার গ্রুর্ট যুক্ত করব। সর্বশেষে তবে সর্বনিম্ন নয়, ভয়াবহ! আমি এটি অন্য প্রকল্পগুলিতে ব্যবহার করছি এবং সত্যিই শিলা!
জুয়ানো

এই প্রশ্নে আগ্রহী গ্রান্টের সাথে সবেমাত্র খেলা শুরু হয়েছিল ...
দিমিত্রি পশকভিচ

@iancrowther, যে সরঞ্জামগুলির ওয়েব ইন্সপেক্টর ব্যবহার করে তা ভি 8-তে রয়েছে। এমন একটি প্রকল্প রয়েছে যার সাথে node-inspectorকথা বলে node --debug, সংযুক্ত হওয়া ব্রাউজারে ডিবাগ তথ্য সরবরাহ করে। এটি দুর্দান্ত, কারণ আপনি ক্রোমকে নোড-ইন্সপেক্টর প্রক্রিয়াতে সংযুক্ত করতে পারেন এবং আপনার অ্যাপটি ডিবাগ করতে সমস্ত ওয়েব পরিদর্শক সরঞ্জাম ব্যবহার করতে পারেন। github.com/dannycoates/node-inspector
ডেভিড সাউদার

উত্তর:


135

ডিবাগে গ্রান্ট চালানোর জন্য আপনাকে স্পষ্টভাবে নোড দেওয়ার জন্য গ্রান্ট স্ক্রিপ্টটি পাস করতে হবে:

node-debug $(which grunt) task

এবং debugger;আপনার কাজে একটি লাইন রাখুন। node-inspectorতারপরে ডিবাগিং সরঞ্জাম সহ একটি ব্রাউজার খুলবে।

28 ফেব্রুয়ারী 2014 সম্পাদনা করুন

node-inspectorকমান্ডটি যুক্ত করেছে node-debug, যা একটি --debugরাজ্যে নোড প্রবর্তন করে এবং ব্রাউজারটি node-inspectorপৃষ্ঠায় খুলবে , যখন এটি প্রথম debuggerলাইনটি বা ব্রেক ব্রেকপয়েন্ট সেট করবে তখন থামবে ।

30 জানুয়ারী 2015 সম্পাদনা করুন

উইন্ডোজগুলিতে জিনিসগুলি আরও জটিল। নির্দেশাবলীর জন্য @ e.gluhotorenko এর উত্তর দেখুন।


1
এটা অসাধারণ. এটি অন্যান্য বিশ্বব্যাপী ইনস্টলড এনপিএম বিনগুলিতেও কাজ করে।
প্লী

1
নোড ডিবাগ which (যা উদ্বেগজনক) টাস্ক নোডেজ ডিফল্ট ডিবাগার ব্যবহার করে
টমাস রোমেরো

3
এ নিয়ে আমার কিছুটা সমস্যা হচ্ছে। আপনি কি পরিষ্কার করতে পারেন $(which grunt)? এটি কি গ্রান্টফিল.জেএসস আমি ডিবাগ করতে চাই? এবং taskআমি কি ( serveউদাহরণ হিসাবে ব্যবহার করে ) রাখি grunt serveবা ঠিক serve? আমি চেষ্টা করেছি node-debug Gruntfile.js serveএবং আরও অনেক কিছু করেছি তবে আমি এটি কাজ করতে পারি না। নোড-ইন্সপেক্টর খোলে এবং এটি প্রথম লাইনে ব্রেক হয়ে যায়, তবে আমি ফাংশনের প্রথম লাইন হিসাবে serveএকটি debugger;লাইন রেখে দিলেও আমি টাস্কে প্রবেশ করতে পারি না ।
ব্রেট

2
@ ব্রেট, আপনি উইন্ডোজ বা ওএসএক্স / লিনাক্সে আছেন? ইউনিক্সে, $ (যা গ্রান্ট) গ্রান্ট-ক্লাইপ grunt.jsস্ক্রিপ্টের পুরো পথটির সাথে প্রতিস্থাপিত হয় । এটি সেই স্ক্রিপ্ট যা আসলে গ্রান্ট চালায়। যদি আপনি উইন্ডোতে থাকেন তবে গ্রান্ট-ক্লাইপ স্ক্রিপ্টের সম্ভাব্য অবস্থানের জন্য stackoverflow.com/a/13443026/240358 (এর নীচে উত্তর) দেখুন। যে সঞ্চালিত gruntআপনার কমান্ড মধ্যে - আপনার উদাহরণে, প্রতিস্থাপন taskসঙ্গেserve
ডেভিড Souther

ধন্যবাদ @ ডেভিডসৌথার, আপনি কি নিজের উত্তরে উইন্ডোজ-নির্দিষ্ট অংশটি যুক্ত করতে চান? আমার সত্যিই লিনাক্সে সরানো উচিত ...
ব্রেট

39

উইন্ডোজ সমাধান

চালান

node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname

ডিরেক্টরিতে আপনার সাথে সিএমডি থেকে Gruntfile.jsdebugger;প্রয়োজনীয় জায়গায় লাইন স্থাপন করতে ভুলবেন না ।


3
গ্রান্ট 0.4 দিয়ে শুরু করা গ্রান্ট এন্ট্রি পয়েন্ট grunt-cliপ্যাকেজের অংশ :node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
মিসেকেকো

4
উইন্ডোজ নির্দেশাবলীর জন্য আপনাকে অনেক ধন্যবাদ। পাওয়ারশেলে আপনি টিল্ডটি কিছুটা কম ভঙ্গুর করতে ব্যবহার করতে পারেনnode --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
জর্জ মাউয়ার

মানুষ, আমি স্রেফ 30 মিনিট সময় বের করে আমার উত্তরটি আপডেট করে! আমার সবে স্ক্রোল করা উচিত ছিল!
ডেভিড সাউদার

1
অন্য কনসোলটি খুলতে এবং চালাতে ভুলবেন নাnode-inspector
valter.santos.matos

@ ভাল্টার.সান্টোস.ম্যাটোস আসলে এখন আপনার নীচের উল্লিখিত নোড
জ্যাকি

7

ডিবাগ করতে, আমাদের বিনের নীচে গ্রুঞ্জ ফাইলটি সংশোধন করতে হবে। আমার মেশিনে গ্রান্ট বিশ্বব্যাপী ইনস্টল করা আছে, তাই আমি / ইউএসআর / লোকাল / লিব / নোড_মডিউল / গ্রান্ট / বিনে গিয়ে ফাইলটি খুললাম এবং সংশোধন করেছি:

#!/usr/bin/env node

প্রতি

#!/usr/bin/env node --debug-brk

--debug-brk জাভাস্ক্রিপ্ট রান করার প্রথম লাইনে ব্রেক হবে।

যদিও এটি একা করা যথেষ্ট নয়, যেহেতু আপনি নোড ইন্সপেক্টর-এর ড্রপ ডাউন-এ আপনি জড়িত টাস্ক js ফাইলটি আবিষ্কার করতে পারবেন না, তাই আপনার যে ফাইলটি ডিবাগ করতে আগ্রহী সেটিকে সংশোধন করতে হবে debugger;যেখানে যুক্ত করে আপনি ব্রেকপয়েন্টটি ঘটতে চান এখন আপনি প্রথম বিরতির পরে অবিরত ক্লিক করতে পারেন, এবং আপনি নিজের debugger;লাইনে ব্রেক করবেন

বেশ ক্লডজি, তবে আমি এখনও পর্যন্ত এটি খুঁজে পেয়েছি।


2
এটি অবিশ্বাস্যরূপে ক্লডজি, যেহেতু এটি শেবাং লাইনে # এবং between n এর মধ্যে / usr / bin / env এবং অননুমোদিত যাদুতে বিভিন্ন আচরণের উপর নির্ভর করে।
ডেভিড সাউদার

2
এটি আমার পক্ষে কাজ করে না। গ্রান্ট এখনও ডিবাগ মোড ছাড়াই চলে।
ইউজিন গ্লহোহোটোরেনকো

@ ডেভিডসৌথার শেবাংস কোনও অনাবৃত জাদু নয়। তারা মানসম্পন্ন POSIX আচরণ
মাইলস রাউট

6

আমি আপনার অবশিষ্ট গ্রুথ ওয়ার্কফ্লো সহ নোড-ইন্সপেক্টরকে সহজেই কনফিগার করতে গ্রান্ট-নোড-ইন্সপেক্টর তৈরি করেছি, এটি পরীক্ষা করে দেখুন: https://github.com/ChrisWren/grunt-node-inspector

এখানে গ্রান্টফিলের একটি অংশ রয়েছে যা চিত্রিত করে যে আপনি গ্রান্ট-নোড-ইন্সপেক্টর, গ্রান্ট-কনকন্টেন্ট এবং গ্রান্ট শেল ব্যবহার করে কীভাবে গ্রান্ট টাস্কটি ডিবাগ করতে পারবেন: https://github.com/CabinJS/Cabin/blob/master/Gruntfile JS # L44-L77


আপনি ভাবছেন, কিছু চালান node --debug-brk $(which grunt) node-inspector build test? আমি এটা পছন্দ করি।
ডেভিড সাউদার

প্রায় কাছাকাছি ছাড়া আমি সমবর্তী ব্যবহার করেন, কারণ node-inspectorথেকে প্রস্থান করা হবে না এবং অনুমতি buildএবং testযেহেতু এটি চিরতরে রান চালানোর জন্য। আমি একটি স্নিপেটে একটি লিঙ্ক যুক্ত করেছি যেখানে আমার এটি সেটআপ আছে।
ক্রিসওয়ারেন

হুম। দ্বিতীয় চিন্তায় ... আমার কর্মপ্রবাহ আমাকে সবে শুরু করেছে node-inspector &, এটি ব্যাকগ্রাউন্ডে রেখে, এবং এটি কল করে calling আপনার সম্পর্কে কোন চিন্তা?
ডেভিড সাউদার

1
নিশ্চিত কেন, তবে এটি আমার পক্ষে কাজ করে না বলে মনে হচ্ছে। আমি কমান্ডটি চালনা করি grunt node-inspectorএবং তারপরে লোকালহোস্ট ইউআরএল এ যাই এবং আমি কোনও উত্স ফাইল দেখতে পাই না। খালি ডিবাগার সরঞ্জামগুলি।
ক্রিস হোলেনবেক

আমি দুটি পৃথক কমান্ড চালিয়ে উত্সটি প্রদর্শন করতে সক্ষম হয়েছি। grunt node-inspectorএবং node --debug-brk Gruntfile.jsআমার গ্রুর্ট ডিরেক্টরি থেকে। তবে আমি যখন গ্রান্ট ফাইলটিতে ব্রেকপয়েন্ট স্থাপন করি তখন এটি সংযোগ ত্রুটির সাথে ক্র্যাশ হয়ে যায়।
ক্রিস হলেনবেক

4

আমি আমার অ্যাপ চালনা এবং নোড-ইন্সপেক্টর চালু করার জন্য একটি কাজ করেছি। এটি বর্তমান প্রস্তাবনার চেয়ে অনেক ভাল, আপনাকে কেবল এই কাজটি গ্রান্টফাইলে যুক্ত করতে হবে:

  grunt.registerTask('debug', 'My debug task.', function() {
        var done = this.async();
        grunt.util.spawn({
            cmd: 'node',
            args: ['--debug', 'app.js'],
            opts: {
                //cwd: current workin directory
            }
        },
        function (error, result, code) {
            if (error) {
                grunt.log.write (result);
                grunt.fail.fatal(error);
            }
            done();
        });
        grunt.log.writeln ('node started');
        grunt.util.spawn({
            cmd: 'node-inspector',
            args: ['&'],
            opts: {
                //cwd: current workin directory
            }
        },
        function (error, result, code) {
            if (error) {
                grunt.log.write (result);
                grunt.fail.fatal(error);
            }
            done();
        });
        grunt.log.writeln ('inspector started');
    });

1
গ্রান্ট-নোড-ইন্সপেক্টর এর লেখক ঠিক আছে। এই দ্রবণটি কেবল পিক্সিক পরিবেশে কাজ করে যখন তার নোড-ইন্সপেক্টর কনফিগার করা সহজ এবং সমবর্তী সহ, পিক্সিক এবং উইন্ডোতে কাজ করে।
রেইনবাবা

3

এখানে দুর্দান্ত উত্তর। 2017 সালে, এখন আপনি করতে পারেন

node --inspect --debug-brk $(which grunt) taskName

যা এমন কিছু প্রিন্ট করে।

To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471

ক্রোমে সেই URL টি খুলুন, এবং আপনি যেতে ভাল!

আমি নোড 7.3.0 ব্যবহার করছি এবং আমি ম্যাক এ আছি। উইন্ডোজটিতে যেতে আপনাকে অন্য পোস্টের কিছু পরামর্শ অনুসরণ করতে হতে পারে।


2

2019 আপডেট

  • আপনি যদি ডিবাগ মোডে গ্রান্ট টাস্কটি চালু করতে চান এবং প্রথম লাইনে ব্রেক করতে চান:

    node --inspect-brk $(which grunt) taskName

  • আপনি যদি কোনও নির্দিষ্ট বন্দরে ডিবাগ মোডে গ্রান্ট টাস্কটি চালু করতে চান:

    node --inspect-brk=8080 $(which grunt) taskName

  • যদি আপনি গ্রোন্টের ডিবাগিং সেশনটি চালিত নোড প্রক্রিয়াতে ভিএসসিইডি সংযুক্ত করতে চান, তবে vscode এ নিম্নলিখিত কনফিগারেশনটি ব্যবহার করুন:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    
    {
      "type": "node",
      "request": "attach",
      "name": "Attach by port IP 5656",
      "port": 8080
    }
  ]
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.