লক্ষ্য
সুতরাং আমি এই কাঠামোটি নিয়ে একটি প্রকল্প করছি:
- আয়নের-অ্যাপ
- firebase-ফাংশন
- ভাগ
লক্ষ্যটি হল shared
মডিউলটিতে সাধারণ ইন্টারফেস এবং ক্লাস সংজ্ঞায়িত করা ।
বিধিনিষেধ
আমি আমার কোডটি স্থানীয়ভাবে এটি ব্যবহার করতে এনপিএম-এ আপলোড করতে চাই না এবং কোডটি আপলোড করার কোনও পরিকল্পনা করছি না। এটি অফলাইনে 100% কাজ করা উচিত।
যদিও উন্নয়ন প্রক্রিয়াটি অফলাইনে কাজ করা উচিত, ionic-app
এবং firebase-functions
মডিউলগুলি ফায়ারবেসে (হোস্টিং ও ফাংশন) স্থাপন করা হতে চলেছে। সুতরাং, shared
মডিউলটি থেকে কোডটি সেখানে পাওয়া উচিত।
আমি এখন পর্যন্ত যা চেষ্টা করেছি
- আমি প্রজেক্টের রেফারেন্সগুলি টাইপ স্ক্রিপ্টে ব্যবহার করার চেষ্টা করেছি , তবে এটি কাজ করার কাছাকাছি পাইনি
- আমি এই প্রশ্নের দ্বিতীয় উত্তরের মতো এনপিএম মডিউল হিসাবে এটি ইনস্টল করে চেষ্টা করেছি
- এটি প্রথমে ঠিকঠাক কাজ করছে বলে মনে হচ্ছে, তবে বিল্ড করার সময়, চলমান অবস্থায় আমি এই জাতীয় ত্রুটি পেয়েছি
firebase deploy
:
- এটি প্রথমে ঠিকঠাক কাজ করছে বলে মনে হচ্ছে, তবে বিল্ড করার সময়, চলমান অবস্থায় আমি এই জাতীয় ত্রুটি পেয়েছি
Function failed on loading user code. Error message: Code in file lib/index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'shared'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/srv/lib/index.js:5:18)
প্রশ্ন
টাইপস স্ক্রিপ্ট কনফিগারেশন, বা এনপিএম ব্যবহার করে কোনও ভাগ করা মডিউল তৈরির জন্য আপনার কি সমাধান আছে?
দয়া করে এটি সদৃশ হিসাবে চিহ্নিত করবেন না → স্ট্যাকওভারফ্লোতে আমি যে কোনও সমাধান খুঁজে পেয়েছি tried
অতিরিক্ত তথ্য
ভাগ করে নেওয়ার জন্য কনফিগার করুন:
// package.json
{
"name": "shared",
"version": "1.0.0",
"description": "",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
"files": [
"dist/src/**/*"
],
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"publishConfig": {
"access": "private"
}
}
// tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"rootDir": ".",
"sourceRoot": "src",
"outDir": "dist",
"sourceMap": true,
"declaration": true,
"target": "es2017"
}
}
ফাংশনগুলির জন্য কনফিগার করুন:
// package.json
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "8"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.1.0",
"shared": "file:../../shared"
},
"devDependencies": {
"@types/braintree": "^2.20.0",
"tslint": "^5.12.0",
"typescript": "^3.2.2"
},
"private": true
}
// tsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": false,
"rootDir": "src",
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017"
}
}
বর্তমান আত্মা
আমি ভাগ করা মডিউলে একটি এনপিএম স্ক্রিপ্ট যুক্ত করেছি, যা সমস্ত মডিউলগুলিতে (ইনডেক্স.জেএস ব্যতীত) অনুলিপি করে। এটিতে আমার সমস্যা রয়েছে, আমি এসসিএম-তে সদৃশ কোডটি যাচাই করেছিলাম এবং প্রতিটি পরিবর্তনে আমার সেই আদেশটি চালানো দরকার। এছাড়াও, আইডিই এটিকে কেবল আলাদা ফাইল হিসাবে বিবেচনা করে।