ਐਂਗੁਲਰ ਅਤੇ .NET 8 ਤੈਨਾਤੀ ਵਿੱਚ 'ਅਣਕਿਆਸੇ ਟੋਕਨ '<' ਨੂੰ ਹੱਲ ਕਰਨਾ

ਐਂਗੁਲਰ ਅਤੇ .NET 8 ਤੈਨਾਤੀ ਵਿੱਚ 'ਅਣਕਿਆਸੇ ਟੋਕਨ '<' ਨੂੰ ਹੱਲ ਕਰਨਾ
ਐਂਗੁਲਰ ਅਤੇ .NET 8 ਤੈਨਾਤੀ ਵਿੱਚ 'ਅਣਕਿਆਸੇ ਟੋਕਨ '<' ਨੂੰ ਹੱਲ ਕਰਨਾ

ਜਦੋਂ ਤੈਨਾਤੀ ਡੀਬੱਗ ਵਿੱਚ ਕੰਮ ਕਰਦੀ ਹੈ ਪਰ IIS 'ਤੇ ਅਸਫਲ ਹੁੰਦੀ ਹੈ

ਕੀ ਤੁਸੀਂ ਕਦੇ ਆਪਣੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਡੀਬੱਗ ਮੋਡ ਵਿੱਚ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦੇ ਦੇਖ ਕੇ ਨਿਰਾਸ਼ਾ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਹੈ ਪਰ ਤੈਨਾਤ ਕੀਤੇ ਜਾਣ 'ਤੇ ਬੁਰੀ ਤਰ੍ਹਾਂ ਅਸਫਲ ਹੋ ਗਿਆ ਹੈ? 😟 ਕਿਸੇ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਮਾਈਗ੍ਰੇਟ ਕਰਨ ਵੇਲੇ ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਪਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲਾ ਹੋ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਮੈਂ ਹਾਲ ਹੀ ਵਿੱਚ ਆਪਣੀ ਐਂਗੁਲਰ ਅਤੇ .NET ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ .NET Core 2.1 ਤੋਂ .NET 8 ਵਿੱਚ ਤਬਦੀਲ ਕਰਨ ਵੇਲੇ ਅਨੁਭਵ ਕੀਤਾ ਹੈ। ਮੁੱਦਾ ਗੁਪਤ ਜਾਪਦਾ ਸੀ: ਇੱਕ 'ਅਨਕੌਟ ਸਿੰਟੈਕਸ ਐਰਰ: ਅਣਕਿਆਸੀ ਟੋਕਨ'

ਅਜੀਬ ਹਿੱਸਾ? ਤੈਨਾਤੀ ਫਾਈਲਾਂ ਦੀ ਜਾਂਚ ਕਰਨ 'ਤੇ ਪਤਾ ਲੱਗਾ ਕਿ ਕੁਝ ਸਕ੍ਰਿਪਟਾਂ-ਜਿਵੇਂ ਕਿ ਰਨਟਾਈਮ, ਪੌਲੀਫਿਲਜ਼, ਅਤੇ ਮੁੱਖ-ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਦੀ ਬਜਾਏ HTML ਫਾਈਲਾਂ ਦੇ ਤੌਰ 'ਤੇ ਦਿੱਤੀਆਂ ਗਈਆਂ ਸਨ। ਇਸ ਵਿਵਹਾਰ ਨੇ ਮੈਨੂੰ ਆਪਣਾ ਸਿਰ ਖੁਰਕਣ ਲਈ ਛੱਡ ਦਿੱਤਾ ਕਿਉਂਕਿ ਸਥਾਨਕ 'dist' ਫੋਲਡਰ ਨੇ ਸਹੀ JS ਫਾਰਮੈਟ ਦਿਖਾਇਆ ਹੈ। ਆਈਆਈਐਸ ਤਾਇਨਾਤੀ ਨੇ, ਹਾਲਾਂਕਿ, ਇੱਕ ਬਹੁਤ ਵੱਖਰੀ ਤਸਵੀਰ ਪੇਂਟ ਕੀਤੀ.

ਇੱਕ ਡਿਵੈਲਪਰ ਹੋਣ ਦੇ ਨਾਤੇ, ਅਜਿਹੀਆਂ ਅਸੰਗਤਤਾਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਇੱਕ ਰਹੱਸ ਨੂੰ ਸੁਲਝਾਉਣ ਵਰਗਾ ਮਹਿਸੂਸ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਹਰ ਲੀਡ ਇੱਕ ਹੋਰ ਉਲਝਣ ਵਾਲਾ ਸਵਾਲ ਖੋਲ੍ਹਦੀ ਹੈ। ਮੈਂ ਮਾਰਗਾਂ, ਕਮਾਂਡਾਂ ਅਤੇ ਸੰਰਚਨਾਵਾਂ ਦੀ ਦੋ ਵਾਰ ਜਾਂਚ ਕੀਤੀ ਪਰ ਤੁਰੰਤ ਕਾਰਨ ਦਾ ਪਤਾ ਨਹੀਂ ਲਗਾ ਸਕਿਆ। ਡੈੱਡਲਾਈਨ ਦੇ ਨਾਲ, ਇਸ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨਾ ਇੱਕ ਤਰਜੀਹ ਬਣ ਗਿਆ ਹੈ. 🕒

ਇਸ ਪੋਸਟ ਵਿੱਚ, ਮੈਂ ਇਸ ਸਮੱਸਿਆ ਦੇ ਮੂਲ ਕਾਰਨ ਵਿੱਚ ਡੁਬਕੀ ਲਗਾਵਾਂਗਾ, ਸਮੱਸਿਆ ਦੇ ਨਿਪਟਾਰੇ ਦੌਰਾਨ ਸਿੱਖੇ ਸਬਕ ਸਾਂਝੇ ਕਰਾਂਗਾ, ਅਤੇ ਇਸਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਹੱਲ ਕਰਨ ਵਿੱਚ ਤੁਹਾਡੀ ਅਗਵਾਈ ਕਰਾਂਗਾ। ਜੇਕਰ ਤੁਸੀਂ ਵੀ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਸਥਿਤੀ ਦਾ ਸਾਹਮਣਾ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਬਣੇ ਰਹੋ—ਮੈਂ ਵਾਅਦਾ ਕਰਦਾ ਹਾਂ ਕਿ ਤੁਸੀਂ ਇਸ ਯਾਤਰਾ ਵਿੱਚ ਇਕੱਲੇ ਨਹੀਂ ਹੋ!

ਹੁਕਮ ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ
<mimeMap> IIS ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ MIME ਕਿਸਮਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ JavaScript ਵਰਗੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਸਮੱਗਰੀ ਕਿਸਮ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ।
ng build --prod --output-hashing=all ਕੈਚਿੰਗ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਲਈ ਹੈਸ਼ਡ ਫਾਈਲਨਾਮਾਂ ਦੇ ਨਾਲ ਉਤਪਾਦਨ ਮੋਡ ਵਿੱਚ ਐਂਗੁਲਰ ਐਪਲੀਕੇਸ਼ਨ ਬਣਾਉਂਦਾ ਹੈ।
fs.lstatSync() ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਨਿਸ਼ਚਿਤ ਮਾਰਗ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਹੈ ਜਾਂ ਫਾਈਲ ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ Node.js ਸਕ੍ਰਿਪਟ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੌਰਾਨ।
mime.lookup() ਤੈਨਾਤੀ ਦੌਰਾਨ ਸਹੀ ਸੰਰਚਨਾਵਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇਸਦੇ ਐਕਸਟੈਂਸ਼ਨ ਦੇ ਅਧਾਰ ਤੇ ਇੱਕ ਫਾਈਲ ਦੀ MIME ਕਿਸਮ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ।
baseHref ਉਪ-ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਤੈਨਾਤ ਕੀਤੇ ਜਾਣ 'ਤੇ ਸਹੀ ਰੂਟਿੰਗ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, ਐਂਗੁਲਰ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਅਧਾਰ URL ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ।
deployUrl ਸਹੀ ਫਾਈਲ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ, ਐਂਗੁਲਰ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਸਥਿਰ ਸੰਪਤੀਆਂ ਨੂੰ ਤੈਨਾਤ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਮਾਰਗ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ।
fs.readdirSync() Node.js ਵਿੱਚ ਇੱਕ ਨਿਸ਼ਚਿਤ ਫੋਲਡਰ ਤੋਂ ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਸਮਕਾਲੀ ਰੂਪ ਵਿੱਚ ਪੜ੍ਹਦਾ ਹੈ, ਫਾਈਲ ਪ੍ਰਮਾਣਿਕਤਾ ਸਕ੍ਰਿਪਟਾਂ ਲਈ ਉਪਯੋਗੀ ਹੈ।
path.join() ਇੱਕ ਸਿੰਗਲ ਸਧਾਰਣ ਮਾਰਗ ਸਤਰ ਵਿੱਚ ਕਈ ਪਾਥ ਖੰਡਾਂ ਨੂੰ ਜੋੜਦਾ ਹੈ, ਜੋ ਕਰਾਸ-ਪਲੇਟਫਾਰਮ ਫਾਈਲ ਹੈਂਡਲਿੰਗ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।
expect() ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਤੈਨਾਤੀ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦੇ ਹੋਏ, ਨਿਸ਼ਚਿਤ ਸ਼ਰਤਾਂ ਸਹੀ ਹੋਣ ਦਾ ਦਾਅਵਾ ਕਰਨ ਲਈ ਜੈਸਟ ਟੈਸਟਿੰਗ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ng serve --base-href ਰੂਟਿੰਗ ਮੁੱਦਿਆਂ ਦੀ ਸਥਾਨਕ ਜਾਂਚ ਲਈ ਕਸਟਮ ਬੇਸ URL ਨਾਲ ਐਂਗੁਲਰ ਡਿਵੈਲਪਮੈਂਟ ਸਰਵਰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ।

Angular ਅਤੇ .NET ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਤੈਨਾਤੀ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਖਤਮ ਕਰਨਾ

ਉੱਪਰ ਦਿੱਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ, ਹਰੇਕ ਹੱਲ ਇੱਕ ਐਂਗੁਲਰ ਅਤੇ .NET ਵਾਤਾਵਰਣ ਵਿੱਚ ਤੈਨਾਤੀ ਮੁੱਦਿਆਂ ਦੇ ਨਿਪਟਾਰੇ ਦੇ ਇੱਕ ਖਾਸ ਪਹਿਲੂ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦਾ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ IIS ਸੰਰਚਨਾ ਫਾਈਲ web.config MIME ਕਿਸਮ ਦੀ ਬੇਮੇਲਤਾ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਫਾਈਲ ਐਕਸਟੈਂਸ਼ਨਾਂ ਜਿਵੇਂ ਕਿ `.js` ਨੂੰ ਉਹਨਾਂ ਦੀ ਉਚਿਤ MIME ਕਿਸਮ (ਐਪਲੀਕੇਸ਼ਨ/ਜਾਵਾਸਕ੍ਰਿਪਟ) ਨਾਲ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਮੈਪ ਕਰਨ ਦੁਆਰਾ, IIS ਜਾਣਦਾ ਹੈ ਕਿ ਇਹਨਾਂ ਫਾਈਲਾਂ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰਾਂ ਨੂੰ ਕਿਵੇਂ ਸਹੀ ਢੰਗ ਨਾਲ ਪੇਸ਼ ਕਰਨਾ ਹੈ। ਇਹ "ਅਣਕਿਆਸੇ ਟੋਕਨ' ਨੂੰ ਰੋਕਦਾ ਹੈ

ਐਂਗੁਲਰ ਬਿਲਡ ਕਮਾਂਡ (ng ਬਿਲਡ --prod) ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਉਤਪਾਦਨ ਲਈ ਅਨੁਕੂਲਿਤ ਹੈ। `--output-hashing=all` ਪੈਰਾਮੀਟਰ ਫਾਈਲਾਂ ਨੂੰ ਹੈਸ਼ ਕਰਦਾ ਹੈ, ਬ੍ਰਾਊਜ਼ਰਾਂ ਨੂੰ ਪੁਰਾਣੇ ਸੰਸਕਰਣਾਂ ਦੀ ਗਲਤੀ ਨਾਲ ਵਰਤੋਂ ਕੀਤੇ ਬਿਨਾਂ ਫਾਈਲਾਂ ਨੂੰ ਕੈਸ਼ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਅਸਲ-ਸੰਸਾਰ ਤੈਨਾਤੀਆਂ ਵਿੱਚ ਖਾਸ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜਿੱਥੇ ਉਪਭੋਗਤਾ ਅਕਸਰ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਮੁੜ-ਵਿਜ਼ਿਟ ਕਰਦੇ ਹਨ। `angular.json` ਵਿੱਚ `baseHref` ਅਤੇ `deployUrl` ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਕੇ, ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ ਉਪ-ਡਾਇਰੈਕਟਰੀਆਂ ਜਾਂ CDN ਵਿੱਚ ਹੋਸਟ ਕੀਤੇ ਜਾਣ 'ਤੇ ਵੀ ਰਾਊਟਿੰਗ ਅਤੇ ਸੰਪਤੀ ਲੋਡਿੰਗ ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਦੇ ਹਨ। ਇਹ ਕਦਮ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਆਮ ਤੈਨਾਤੀ ਚੁਣੌਤੀਆਂ ਲਈ ਲਚਕੀਲੇ ਬਣਾਉਂਦੇ ਹਨ, ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਦੋਵਾਂ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦੇ ਹਨ।

ਉੱਪਰ ਦਿੱਤੀ ਗਈ Node.js ਸਕ੍ਰਿਪਟ ਫਾਈਲਾਂ ਦੀ ਇਕਸਾਰਤਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ `dist` ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਸਕੈਨ ਕਰਕੇ ਡੀਬੱਗਿੰਗ ਦੀ ਇੱਕ ਹੋਰ ਪਰਤ ਜੋੜਦੀ ਹੈ। `fs.readdirSync` ਅਤੇ `mime.lookup` ਵਰਗੀਆਂ ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਸਕ੍ਰਿਪਟ ਤਸਦੀਕ ਕਰਦੀ ਹੈ ਕਿ ਤੈਨਾਤੀ ਤੋਂ ਪਹਿਲਾਂ ਹਰੇਕ ਫਾਈਲ ਵਿੱਚ ਸਹੀ MIME ਕਿਸਮ ਹੈ। ਇਹ ਕਿਰਿਆਸ਼ੀਲ ਕਦਮ ਉਤਪਾਦਨ ਵਿੱਚ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਸੰਭਾਵੀ ਤਰੁਟੀਆਂ ਨੂੰ ਫੜਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਸਮਾਂ ਬਚਾਉਂਦਾ ਹੈ ਅਤੇ ਨਿਰਾਸ਼ਾ ਨੂੰ ਘੱਟ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਮੇਰੀ ਇੱਕ ਤੈਨਾਤੀ ਦੇ ਦੌਰਾਨ, ਇਸ ਸਕ੍ਰਿਪਟ ਨੇ ਮੈਨੂੰ ਇਹ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕੀਤੀ ਕਿ ਇੱਕ ਕੌਂਫਿਗਰੇਸ਼ਨ ਸਮੱਸਿਆ ਨੇ JSON ਫਾਈਲਾਂ ਨੂੰ ਗਲਤ MIME ਕਿਸਮ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਸੀ! 🔍

ਅੰਤ ਵਿੱਚ, ਜੇਸਟ ਟੈਸਟ ਸਕ੍ਰਿਪਟ ਮੁੱਖ ਤੈਨਾਤੀ ਪਹਿਲੂਆਂ ਦੀ ਸਵੈਚਲਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ। ਇਹ `dist` ਫੋਲਡਰ ਵਿੱਚ `runtime.js` ਅਤੇ `main.js` ਵਰਗੀਆਂ ਨਾਜ਼ੁਕ ਫਾਈਲਾਂ ਦੀ ਮੌਜੂਦਗੀ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ। ਇਹ ਤੈਨਾਤੀ ਦੌਰਾਨ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਟੀਮ ਵਾਤਾਵਰਨ ਵਿੱਚ ਜਿੱਥੇ ਕਈ ਡਿਵੈਲਪਰ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। ਅਜਿਹੇ ਟੈਸਟਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਕੇ, ਤੁਸੀਂ ਭਰੋਸੇ ਨਾਲ ਆਪਣੀ ਅਰਜ਼ੀ ਨੂੰ ਇਹ ਜਾਣਦੇ ਹੋਏ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਪ੍ਰਮਾਣਿਤ ਹੋ ਗਿਆ ਹੈ। ਇਹ ਹੱਲ, ਜਦੋਂ ਇਕੱਠੇ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਤੈਨਾਤੀ ਦੀਆਂ ਚੁਣੌਤੀਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਅਤੇ ਨਿਰਵਿਘਨ ਉਤਪਾਦਨ ਰੀਲੀਜ਼ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਇੱਕ ਮਜ਼ਬੂਤ ​​ਪ੍ਰਕਿਰਿਆ ਬਣਾਉਂਦੇ ਹਨ।

'ਅਣਕਿਆਸੇ ਟੋਕਨ' ਨੂੰ ਹੱਲ ਕਰਨਾ

ਇਹ ਹੱਲ IIS ਅਤੇ ਫਾਈਲ ਮੈਪਿੰਗ ਵਿੱਚ ਸਰਵਰ-ਸਾਈਡ ਸੰਰਚਨਾ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ JavaScript ਫਾਈਲਾਂ ਲਈ ਸਹੀ MIME ਕਿਸਮਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ।

<!-- web.config solution to fix MIME type issues in IIS -->
<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".*" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".js" mimeType="application/javascript" />
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>
</configuration>

ਐਂਗੁਲਰ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਓ ਅਤੇ ਤੈਨਾਤੀ ਮਾਰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ

ਇਸ ਹੱਲ ਵਿੱਚ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਸ਼ਾਮਲ ਹੈ ਕਿ ਐਂਗੁਲਰ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਰਚਿਤ ਹੈ ਅਤੇ ਤੈਨਾਤੀ ਮਾਰਗ ਸਹੀ ਹਨ।

// Angular CLI commands to rebuild the application
ng build --prod --output-hashing=all
// Ensure deployment paths in angular.json are set correctly
{
  "outputPath": "dist/my-app",
  "baseHref": "/",
  "deployUrl": "/"
}
// Copy contents of dist folder to IIS hosted directory

ਡਿਸਟ ਫੋਲਡਰ ਵਿੱਚ ਫਾਈਲ ਕਿਸਮਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ Node.js ਸਕ੍ਰਿਪਟ

ਇਹ ਸਕ੍ਰਿਪਟ ਤੈਨਾਤ ਫਾਈਲਾਂ ਦੀ ਇਕਸਾਰਤਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਉਹਨਾਂ ਨੂੰ ਡੀਬੱਗਿੰਗ ਲਈ Node.js ਵਿੱਚ ਸਹੀ MIME ਕਿਸਮ ਦੇ ਨਾਲ ਪਰੋਸਿਆ ਗਿਆ ਹੈ।

// Node.js script to check MIME types of files in the dist folder
const fs = require('fs');
const path = require('path');
const mime = require('mime-types');
// Directory to check
const distDir = path.join(__dirname, 'dist');
// Function to validate file types
function validateFiles(dir) {
  fs.readdirSync(dir).forEach(file => {
    const fullPath = path.join(dir, file);
    if (fs.lstatSync(fullPath).isDirectory()) {
      validateFiles(fullPath);
    } else {
      const mimeType = mime.lookup(fullPath);
      console.log(`File: ${file}, MIME Type: ${mimeType}`);
    }
  });
}
validateFiles(distDir);

ਤੈਨਾਤੀ ਲਈ ਯੂਨਿਟ ਟੈਸਟ

ਇਹ ਐਂਗੁਲਰ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਡਿਪਲਾਇਮੈਂਟ ਪੈਕੇਜ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਜੈਸਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟ ਸੈੱਟਅੱਪ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।

// Jest test to validate Angular dist folder integrity
const fs = require('fs');
const path = require('path');
test('All JavaScript files should exist and be served correctly', () => {
  const distDir = path.join(__dirname, 'dist');
  const requiredFiles = ['runtime.js', 'polyfills.js', 'main.js'];
  requiredFiles.forEach(file => {
    const filePath = path.join(distDir, file);
    expect(fs.existsSync(filePath)).toBe(true);
  });
});

ਤੈਨਾਤੀ ਵਿੱਚ ਸਥਿਰ ਫਾਈਲ ਸੰਰਚਨਾ ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਸਮਝਣਾ

ਇੱਕ ਨਾਜ਼ੁਕ ਪਹਿਲੂ ਜੋ ਅਕਸਰ ਤੈਨਾਤੀ ਦੌਰਾਨ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਉਹ ਹੈ ਸਥਿਰ ਫਾਈਲ ਹੈਂਡਲਿੰਗ ਦੀ ਸਹੀ ਸੰਰਚਨਾ। Angular ਅਤੇ .NET ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਕੰਮ ਕਰਨ ਲਈ ਸਥਿਰ ਸੰਪਤੀਆਂ ਜਿਵੇਂ ਕਿ JavaScript ਅਤੇ CSS ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਸਰਵਰ 'ਤੇ ਗਲਤ MIME ਕਿਸਮ ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਬਦਨਾਮ "ਅਨਕੈਪਟ ਸਿੰਟੈਕਸ ਐਰਰ: ਅਣਕਿਆਸਿਤ ਟੋਕਨ' ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀਆਂ ਹਨ।ਸਥਿਰ ਸਮੱਗਰੀ IIS ਸੰਰਚਨਾ ਵਿੱਚ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇਹਨਾਂ ਫਾਈਲਾਂ ਦੀ ਸਹੀ ਵਿਆਖਿਆ ਕੀਤੀ ਗਈ ਹੈ। ਰਨਟਾਈਮ ਹੈਰਾਨੀ ਤੋਂ ਬਚਣ ਲਈ ਅਜਿਹੀਆਂ ਸਰਵਰ-ਪੱਧਰ ਦੀਆਂ ਸੰਰਚਨਾਵਾਂ ਲਾਜ਼ਮੀ ਹਨ। 🚀

ਖੋਜਣ ਲਈ ਇੱਕ ਹੋਰ ਕੋਣ ਰੂਟਿੰਗ ਦੀਆਂ ਗਲਤ ਸੰਰਚਨਾਵਾਂ ਦਾ ਪ੍ਰਭਾਵ ਹੈ। ਐਂਗੁਲਰ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕਲਾਇੰਟ-ਸਾਈਡ ਰੂਟਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ, ਜੋ ਅਕਸਰ ਸਰਵਰ ਸੈੱਟਅੱਪਾਂ ਨਾਲ ਟਕਰਾਅ ਕਰਦੀਆਂ ਹਨ ਜੋ ਪੂਰਵ-ਪ੍ਰਭਾਸ਼ਿਤ ਅੰਤਮ ਬਿੰਦੂਆਂ ਦੀ ਉਮੀਦ ਕਰਦੇ ਹਨ। ਸਰਵਰ ਕੌਂਫਿਗਰੇਸ਼ਨ ਵਿੱਚ ਫਾਲਬੈਕ ਰੂਟਾਂ ਨੂੰ ਜੋੜਨਾ, ਜਿਵੇਂ ਕਿ ਸਾਰੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ `index.html` 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਨਾ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਟੁੱਟਦੀ ਨਹੀਂ ਹੈ। ਉਦਾਹਰਨ ਲਈ, IIS ਵਿੱਚ, ਇਹ ਇੱਕ ` ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ` ਨਿਯਮ ਜੋ ਸਾਰੀਆਂ ਬੇਮੇਲ ਬੇਨਤੀਆਂ ਨੂੰ ਐਂਗੁਲਰ ਐਂਟਰੀ ਪੁਆਇੰਟ ਵੱਲ ਰੂਟ ਕਰਦਾ ਹੈ। ਇਹ ਸਧਾਰਨ ਪਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਕਦਮ ਡੀਬੱਗਿੰਗ ਦੇ ਘੰਟਿਆਂ ਨੂੰ ਬਚਾ ਸਕਦਾ ਹੈ ਅਤੇ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਮਜ਼ਬੂਤੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾ ਸਕਦਾ ਹੈ। 🛠️

ਅੰਤ ਵਿੱਚ, ਬਿਲਡ-ਟਾਈਮ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਦੀ ਭੂਮਿਕਾ 'ਤੇ ਵਿਚਾਰ ਕਰੋ। Angular ਦੀ `ng build` ਕਮਾਂਡ `--aot` ਅਤੇ `--ਓਪਟੀਮਾਈਜੇਸ਼ਨ` ਵਰਗੇ ਉਤਪਾਦਨ ਫਲੈਗਾਂ ਨਾਲ ਬਿਹਤਰ ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਐਪ ਨੂੰ ਕੰਪਾਇਲ ਅਤੇ ਛੋਟਾ ਕਰਦੀ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨਾ ਕਿ ਇਹ ਅਨੁਕੂਲਤਾ ਤੈਨਾਤੀ ਵਾਤਾਵਰਨ ਨਾਲ ਇਕਸਾਰ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਸ਼ੁਰੂਆਤੀ ਤੈਨਾਤੀ ਦੌਰਾਨ ਸਰੋਤ ਨਕਸ਼ਿਆਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਣਾ ਬਾਅਦ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ ਅਯੋਗ ਕਰਕੇ ਸੁਰੱਖਿਆ ਨਾਲ ਸਮਝੌਤਾ ਕੀਤੇ ਬਿਨਾਂ ਉਤਪਾਦਨ ਵਿੱਚ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ। ਅਜਿਹੇ ਵਧੀਆ ਅਭਿਆਸ ਤੈਨਾਤੀਆਂ ਨੂੰ ਵਧੇਰੇ ਅਨੁਮਾਨਯੋਗ ਅਤੇ ਕੁਸ਼ਲ ਬਣਾਉਂਦੇ ਹਨ।

Angular ਅਤੇ IIS ਤੈਨਾਤੀ ਤਰੁਟੀਆਂ ਬਾਰੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ

  1. ਮੇਰੀ JavaScript ਫਾਈਲ "ਅਣਕਿਆਸੇ ਟੋਕਨ '<'" ਗਲਤੀ ਕਿਉਂ ਦਿੰਦੀ ਹੈ?
  2. ਇਹ ਇਸ ਲਈ ਵਾਪਰਦਾ ਹੈ ਕਿਉਂਕਿ ਸਰਵਰ ਗਲਤ ਸੰਰਚਿਤ ਹੈ ਅਤੇ ਗਲਤ MIME ਕਿਸਮ ਦੇ ਨਾਲ JavaScript ਫਾਈਲ ਨੂੰ ਸਰਵ ਕਰਦਾ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਕੇ MIME ਕਿਸਮਾਂ ਦੀ ਸੰਰਚਨਾ ਕਰੋ <mimeMap> IIS ਵਿੱਚ.
  3. ਮੈਂ ਕਿਵੇਂ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹਾਂ ਕਿ ਮੇਰੀਆਂ ਤੈਨਾਤ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਵਿੱਚ ਸਹੀ MIME ਕਿਸਮਾਂ ਹਨ?
  4. ਤੁਸੀਂ ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ Node.js ਸਕ੍ਰਿਪਟ ਲਿਖ ਸਕਦੇ ਹੋ mime.lookup() ਤੈਨਾਤੀ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ `dist` ਫੋਲਡਰ ਵਿੱਚ ਹਰੇਕ ਫਾਈਲ ਦੀ MIME ਕਿਸਮ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ।
  5. Angular ਤੈਨਾਤੀ ਵਿੱਚ baseHref ਦੀ ਕੀ ਭੂਮਿਕਾ ਹੈ?
  6. baseHref ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਅਧਾਰ ਮਾਰਗ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸੰਪਤੀਆਂ ਅਤੇ ਰੂਟ ਸਹੀ ਢੰਗ ਨਾਲ ਹੱਲ ਹੁੰਦੇ ਹਨ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਸਬ-ਡਾਇਰੈਕਟਰੀਆਂ ਵਿੱਚ ਹੋਸਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
  7. ਮੈਂ IIS ਵਿੱਚ ਰੂਟਿੰਗ ਮੁੱਦਿਆਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਾਂ?
  8. ਸਾਰੀਆਂ ਬੇਮੇਲ ਬੇਨਤੀਆਂ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ ਆਪਣੀ IIS ਸੰਰਚਨਾ ਵਿੱਚ ਇੱਕ ਰੀਰਾਈਟ ਨਿਯਮ ਸ਼ਾਮਲ ਕਰੋ index.html. ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕਲਾਇੰਟ-ਸਾਈਡ ਰੂਟਿੰਗ ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਦੀ ਹੈ।
  9. ਕੀ ਮੈਂ ਨਾਜ਼ੁਕ ਤੈਨਾਤੀ ਫਾਈਲਾਂ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰ ਸਕਦਾ ਹਾਂ?
  10. ਹਾਂ, ਤੁਸੀਂ ਦਾਅਵੇ ਬਣਾਉਣ ਲਈ ਜੇਸਟ ਵਰਗੇ ਟੈਸਟਿੰਗ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ ਦੀ ਮੌਜੂਦਗੀ ਦੀ ਜਾਂਚ ਕਰਨਾ runtime.js ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਪੈਕੇਜ ਵਿੱਚ ਹੋਰ ਮੁੱਖ ਫਾਈਲਾਂ।

ਤੈਨਾਤੀ ਚੁਣੌਤੀਆਂ ਨੂੰ ਸਮੇਟਣਾ

Angular ਅਤੇ .NET ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਤੈਨਾਤੀ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਅਕਸਰ ਸਰਵਰ ਸੰਰਚਨਾਵਾਂ ਅਤੇ ਡੀਬਗਿੰਗ ਟੂਲਸ ਦਾ ਮਿਸ਼ਰਣ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਮੂਲ ਕਾਰਨਾਂ ਦੀ ਪਛਾਣ ਕਰਨਾ, ਜਿਵੇਂ ਕਿ MIME ਕਿਸਮ ਦੇ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ, ਤਰੁੱਟੀਆਂ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਹੱਲ ਕਰਨ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਤੁਹਾਡੀ ਐਪ ਇਰਾਦੇ ਅਨੁਸਾਰ ਚੱਲੇ। 💻

ਵਧੀਆ ਅਭਿਆਸਾਂ ਨੂੰ ਲਾਗੂ ਕਰਕੇ, ਜਿਵੇਂ ਕਿ ਤੁਹਾਡੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨਾ ਅਤੇ ਫਾਲਬੈਕ ਰੂਟਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨਾ, ਤੁਸੀਂ ਤੈਨਾਤੀ ਸਿਰ ਦਰਦ ਤੋਂ ਬਚ ਸਕਦੇ ਹੋ। ਤੁਹਾਡੇ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਇੱਕ ਨਿਰਵਿਘਨ ਅਨੁਭਵ ਅਤੇ ਆਪਣੇ ਲਈ ਮਨ ਦੀ ਸ਼ਾਂਤੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, ਲੁਕੇ ਹੋਏ ਮੁੱਦਿਆਂ ਨੂੰ ਛੇਤੀ ਫੜਨ ਲਈ ਕਈ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਟੈਸਟ ਕਰਨਾ ਯਾਦ ਰੱਖੋ। 😊

ਡਿਪਲਾਇਮੈਂਟ ਟ੍ਰਬਲਸ਼ੂਟਿੰਗ ਲਈ ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
  1. ਐਂਗੁਲਰ ਤੈਨਾਤੀਆਂ ਲਈ IIS ਵਿੱਚ MIME ਕਿਸਮਾਂ ਦੀ ਸੰਰਚਨਾ ਕਰਨ ਦੀ ਵਿਸਤ੍ਰਿਤ ਵਿਆਖਿਆ: ਮਾਈਕ੍ਰੋਸਾਫਟ IIS ਦਸਤਾਵੇਜ਼
  2. ਐਂਗੁਲਰ ਡਿਪਲਾਇਮੈਂਟ ਰਣਨੀਤੀਆਂ ਅਤੇ ਬਿਲਡ ਓਪਟੀਮਾਈਜੇਸ਼ਨ 'ਤੇ ਵਿਆਪਕ ਗਾਈਡ: ਕੋਣੀ ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼
  3. ਫਾਈਲ ਸਿਸਟਮ ਅਤੇ MIME ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ Node.js API ਸੰਦਰਭ: Node.js ਦਸਤਾਵੇਜ਼
  4. ਵੈੱਬ ਸਰਵਰਾਂ ਵਿੱਚ ਸਥਿਰ ਫਾਈਲ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਨੂੰ ਨਿਪਟਾਉਣ ਅਤੇ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਵਧੀਆ ਅਭਿਆਸ: MDN ਵੈੱਬ ਡੌਕਸ
  5. .NET ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਤੈਨਾਤੀ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਅਸਲ-ਸੰਸਾਰ ਦੀ ਸੂਝ: ਸਟੈਕ ਓਵਰਫਲੋ ਚਰਚਾ