2017-02-06 27 views
12

यह शीर्षक थोड़ा भ्रामक हो सकता है लेकिन कृपया थोड़ी देर के लिए मेरे साथ सहन करें।तैनाती के बाद node_modules नहीं मिल सकता

मैंने विजुअल स्टूडियो 2015 पर एक सरल Angular2 ऐप बनाया है और अब मेरे पास published it on Azure है।

विकास वातावरण में नोड_मोड्यूल होने के बाद सही था लेकिन इसे तैनात करने के बाद त्रुटि कहती है कि नोड_मोड्यूल नहीं मिल रहा है।

यहाँ है कि कैसे मैं index.html में मेरा विकास env में चर्चा करते हुए हूँ -

<!-- Polyfill(s) for older browsers --> 
    <script src="/node_modules/core-js/client/shim.min.js"></script> 
    <script src="/node_modules/zone.js/dist/zone.js"></script> 
    <script src="/node_modules/reflect-metadata/Reflect.js"></script> 
    <script src="/node_modules/systemjs/dist/system.src.js"></script> 
    <script src="/systemjs.config.js"></script> 

इसकी भी system.config.js में कहा जाता है -

/** 
* System configuration for Angular 2 samples 
* Adjust as necessary for your application needs. 
*/ 
(function(global) { 

// map tells the System loader where to look for things 
var map = { 
'app':      '/app', // 'dist', 

'@angular':     '/node_modules/@angular', 
'angular2-in-memory-web-api': '/node_modules/angular2-in-memory-web-api', 
'rxjs':      '/node_modules/rxjs' 
}; 

// packages tells the System loader how to load when no filename and/or no extension 
var packages = { 
'app':      { main: 'main.js', defaultExtension: 'js' }, 
'rxjs':      { defaultExtension: 'js' }, 
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }, 
}; 

var ngPackageNames = [ 
'common', 
'compiler', 
'core', 
'forms', 
'http', 
'platform-browser', 
'platform-browser-dynamic', 
'router', 
'router-deprecated', 
'upgrade', 
]; 

// Individual files (~300 requests): 
function packIndex(pkgName) { 
packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 
} 

// Bundled (~40 requests): 
function packUmd(pkgName) { 
packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; 
} 

// Most environments should use UMD; some (Karma) need the individual index files 
var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; 

// Add package entries for angular packages 
ngPackageNames.forEach(setPackageConfig); 

// No umd for router yet 
packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' }; 

var config = { 
map: map, 
packages: packages 
}; 

System.config(config); 

})(this); 

त्रुटि समझ में आता है क्योंकि मेरे पास एक .gitignore फ़ाइल है जो node_modules को सर्वर पर तैनात करने की अनुमति नहीं देती है।

क्या कोई इस बात की सहायता कर सकता है कि मैं इसे तैनात करने के बाद कैसे चला सकता हूं और इसे कार्य करने के लिए उपर्युक्त संदर्भों के साथ क्या परिवर्तन किया जा सकता है।

उत्तर

2

आप या तो अपने पैकेज के हिस्से के रूप node_modules तैनात या एक स्क्रिप्ट चलाने npm install आप अपने package.json

से संकुल प्राप्त करने के लिए अपने package.json फ़ाइल में संकुल प्राप्त करने के लिए है की क्या ज़रूरत है npm install --save package-you-want-to-install

फिर

आप इस लिंक पर स्क्रिप्ट की कोशिश करके पैकेज जेसन से अपनी स्टार्टअप स्क्रिप्ट स्थापित कर सकते हैं https://github.com/woloski/nodeonazure-blog/blob/master/articles/startup-task-to-run-npm-in-azure.markdown

+0

लिंक के लिए धन्यवाद। लेकिन मैं समझ नहीं पा रहा हूं कि लिंक में कमांड कैसे चलाएं। –

4

मैंने सिस्टमजेएस का उपयोग नहीं किया है, लेकिन आपके बक्षीस ने मुझे जवाब देने का प्रयास करने के लिए प्रेरित किया है, क्योंकि यह एल आपके जैसे ओक्स अभी भी एक जवाब की जरूरत है। :)

कुछ सिस्टमजेएस दस्तावेज़ों के माध्यम से चमकने के बाद, ऐसा लगता है कि आपके index.html को विकास बनाम उत्पादन के उपयोग के लिए अलग होना चाहिए। यह वही है डॉक्स development के लिए दिखाने है:

<script src="systemjs/dist/system.js"></script> 
<script> 
    SystemJS.import('/js/main.js'); 
</script> 

और यही वे production के लिए दिखाई देते हैं (नोटिस पहली पंक्ति एक अलग src मार्ग होता है) है:

<script src="systemjs/dist/system-production.js"></script> 
<script> 
    SystemJS.import('/js/main.js'); 
</script> 

इससे भी महत्वपूर्ण बात, ध्यान दें लेने कि node_modules किसी भी मामले में संदर्भित नहीं है, और न ही यह होना चाहिए। यदि आपके पास कोड और कॉन्फ़िगरेशन सही तरीके से सेट है, तो सिस्टमजेएस (अन्य बिल्ड टूल्स की तरह) किसी भी अतिरिक्त <script> टैग के बिना आपको जो कुछ भी चाहिए, उसे पैकेज करेगा। इसके बजाय, आपको अपने कोड के भीतर कहीं से अपने शिम (और इसी तरह) आयात करना चाहिए। उदाहरण के लिए, अपनी वेबपैक मार्गदर्शिका में (वेबपैक सिस्टम जेएस में एक समान भूमिका भरने वाला एक और निर्माण उपकरण है) कोणीय टीम polyfills.ts फ़ाइल दिखाती है जो उनके शिम आयात करती है, फिर उनमें पॉलीफिल फ़ाइल को उनके webpack configuration के भीतर बिल्ड में शामिल किया जाता है।

मुझे खेद है कि मैं विशेष रूप से SystemJS के बारे में अधिक विशिष्ट सलाह नहीं दे सकता, लेकिन उम्मीद है कि यह उत्तर आपको सही दिशा में इंगित करने के लिए पर्याप्त है।

1

एक चीज जो आप कर सकते हैं वह है Kure डैशबोर्ड के माध्यम से Azure सर्वर पर आवश्यक पैकेज स्थापित करें।

  1. https://yoursitename.scm.azurewebsites.net
  2. तब डीबग कंसोल पर जाएं -> सीएमडी
  3. जाओ घर के लिए \ साइट \ wwwroot निर्देशिका
  4. प्रकार NPM स्थापित

यह कोणीय के लिए आवश्यक पैकेज स्थापित हो जाएगा Azure सर्वर पर चलाने के लिए 2 ऐप।

2

system.config.js

आप पहली बार यह बंडल करने की जरूरत का उपयोग न करें। Azure में node_modules अपलोड न करें। बंडल करने के लिए नीचे लिंक देखें।

How to bundle an Angular app for production

एक बार जब आप बंडल जिले फ़ोल्डर बना देगा। आप Azure में dist फ़ोल्डर अपलोड कर सकते हैं।

+0

मैंने 'एनपीएम रन बंडल' चलाने की कोशिश की लेकिन मुझे 'गायब स्क्रिप्ट' बंडल त्रुटि मिली। –

+0

त्रुटि क्या है? और क्या आपने इसे बंडल करने के लिए उपरोक्त लिंक का पालन किया? –

+1

@rajm सही है, आपको node_modules अपलोड नहीं करना चाहिए, लेकिन एक .js स्क्रिप्ट में सब कुछ बंडल करना चाहिए। 'अनुपलब्ध स्क्रिप्ट' के संबंध में इसका मतलब है कि आपने अपने 'package.json' फ़ाइल में नाम 'बंडल' के साथ एक कमांड कॉन्फ़िगर नहीं किया है। इसके बारे में कैसे: http://stackoverflow.com/questions/35539622/how-do-you-deploy-angular-2-apps? इसे चलाने पर –

2

NPM .. prod env पर अपने deps स्थापित

npm i --production 
+0

, मुझे कंसोल पर कुछ 'टाइपिंग इंस्टॉल' मिलता है और फिर निष्पादन बंद हो जाता है। –

+0

फिर इस दौड़ के बाद .... एनपीएम शुरू करें – danday74

संबंधित मुद्दे