নোড.জেএস, ফাইল খুলতে পারে না। ত্রুটি: ENOENT, স্ট্যাট './path/to/file'


126

আমি আমার কম্পিউটারে এক্সপ্রেস ফ্রেমওয়ার্ক ব্যবহার করে একটি নোড.জেএস প্রোগ্রাম তৈরি করেছি, যেখানে কোনও অভিযোগ ছাড়াই এটি দুর্দান্ত চলে।

যাইহোক, আমি যখন আমার SUSE স্টুডিও অ্যাপ্লায়েন্সটিতে এটি চালানোর উদ্দেশ্যে তৈরি করি তখন আমি কোনও ফাইল মিথস্ক্রিয়ায় একটি ত্রুটি পেয়েছি।

Error: ENOENT, stat './path/to/file'

আমি ফাইলের অনুমতিগুলি সঠিক কিনা তা যাচাই করেছি they আমার কম্পিউটার এবং আমার অ্যাপ্লায়েন্স নোডের বিভিন্ন সংস্করণ চলছে, যদি এটি বিবেচনা করে।

কোন চিন্তা?


1
যেহেতু পথটি আপেক্ষিক, সম্ভবত আপনি এটি অন্য ডিরেক্টরি থেকে চালাচ্ছেন? আপনি কীভাবে পাথ তৈরি করছেন এবং ডিরেক্টরি কাঠামোটি কী? এবং আপনি কিভাবে নোড চলছে?
লগানফস্মিথ

1
ধন্যবাদ, হ্যাঁ আমি অন্য ডিরেক্টরি থেকে স্ক্রিপ্টটি চালাচ্ছিলাম এবং বোকামি করে ধরে নিয়েছিলাম যে ফাইলের পথটি স্ক্রিপ্টের সাথে সম্পর্কিত হবে। আমি জানতাম এটি এর মতো সাধারণ কিছু ছিল :)

এটি স্থিরযোগ্য হওয়া উচিত। আপনি কীভাবে পথ তৈরি করছেন এবং আপনি এটির কী সমাধানের প্রত্যাশা করছেন তাতে কিছু কোড যুক্ত করতে পারেন? আপনি যদি এটি কোনও নির্দিষ্ট ফাইলের সাথে সম্পর্কিত হতে চান তবে সাধারণত আপনি তা করতে পারেন__dirname + 'path/to/file';
লোগানফস্মিথ

হ্যাঁ, আমি এখন এটিই করেছি। আমি "নোড ~ / পাথ / টু / স্ক্রিপ্ট.জেএস" চালিয়ে স্ক্রিপ্টটি চালিয়ে যাচ্ছিলাম এবং "~ / পাথ /" "" ধন্যবাদ ধন্যবাদ!

উত্তর:


187

এর সাথে সুনির্দিষ্ট পাথগুলি .বর্তমান ওয়ার্কিং ডিরেক্টরি সম্পর্কিত, স্ক্রিপ্ট ফাইলের সাথে সম্পর্কিত নয়। সুতরাং ফাইলটি যদি আপনি চালনা করেন node app.jsতবে আপনি চালিত হলেও খুঁজে পাওয়া যাবে না node folder/app.js। এর একমাত্র ব্যতিক্রম require('./file')এবং এটি কেবলমাত্র সম্ভব কারণ কারণ requireপ্রতি মডিউল বিদ্যমান এবং তাই এটি জানেন যে এটি কোন মডিউলটি থেকে ডাকা হচ্ছে।

স্ক্রিপ্টের সাথে সম্পর্কিত কোনও পাথ তৈরি করতে আপনাকে অবশ্যই __dirnameভেরিয়েবলটি ব্যবহার করতে হবে ।

var path = require('path');

path.join(__dirname, 'path/to/file')

বা সম্ভাব্য

path.join(__dirname, 'path', 'to', 'file')

11
ধন্যবাদ; এটি কখনও কখনও এই জাতীয় ছোট জিনিস যা নবাগতদের (যেমন আমার মত!) ডকুমেন্টেশন খুঁজে পাওয়া শক্ত।

5

আপনার app.js ব্যবহার করার জন্য এখানে কোড

ইনপুট ফাইলের নাম নির্দিষ্ট করে

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