2016-10-23 16 views
5

मैं एक vue प्रोजेक्ट को कॉन्फ़िगर कर रहा हूं। मैंने वेबपैक टेम्पलेट का इस्तेमाल किया। (एनपीएम इंस्टॉल इनप वेबपैक)। मैं टर्मिनल में एक त्रुटि हो रही है -वू 2.0 मार्गों को स्थापित करना - साइड इफेक्ट्स के लिए 'नया' का उपयोग न करें

ERROR in ./src/main.js 

✘ http://eslint.org/docs/rules/no-new Do not use 'new' for side effects 
/Users/uz067252/Documents/Development/Vue/workex/vue-project/src/main.js:21:1 
new Vue({ 
^ 


✘ 1 problem (1 error, 0 warnings) 


Errors: 
1 http://eslint.org/docs/rules/no-new 

यहाँ main.js

import Vue from 'vue' 
import App from './App.vue' 
import Hello from './components/Hello.vue' 

import VueRouter from 'vue-router' 
import VueResource from 'vue-resource' 

// We want to apply VueResource and VueRouter 
// to our Vue instance 
Vue.use(VueResource) 
Vue.use(VueRouter) 

// Pointing routes to the components they should use 
var router = new VueRouter({ 
routes: [ 
    { path: '/hello', component: Hello }, 
    { path: '*', redirect: '/hello' } 
] 
}) 

new Vue({ 
el: '#app', 
router: router, 
render: h => h(App) 
}) 

धन्यवाद

उत्तर

11

वह त्रुटि आपके एस्लिंट कोड फ़ॉर्मेटर से आ रही है, न कि Vue.js से।

आपका वेबपैक वातावरण आपके ऐप को बनाने और शुरू करने से पहले कोड सत्यापित करने के लिए कॉन्फ़िगर किया गया है। ऐसा करने पर, आपके एस्लिंट ने चेतावनी दी है।

यह बचने के लिए, (अपने main.js फ़ाइल के अंतिम 5 लाइनों में) के रूप में कार्य करें:

new Vue({ // eslint-disable-line no-new 
    el: '#app', 
    router: router, 
    render: h => h(App) 
}) 

क्या आप ऊपर कर रहे हैं केवल कि उपरोक्त पंक्ति में new के लिए eslint चेतावनी को अक्षम करने है । अब आपका वेबपैक सामान्य रूप से आपका ऐप शुरू करेगा।

दूसरा विकल्प .eslintrc.js (प्रोजेक्ट रूट फ़ोल्डर में) में नियम सेट करना है, जहां आप निर्दिष्ट कर सकते हैं कि no-new नियम को अनदेखा किया जाना चाहिए। (इस मामले में अनुशंसित नहीं)

+0

में तीन कोष्ठक

(()=>code)(); 

कोशिश और मैं लिंटर कैसे हटा सकता मेरी परियोजना से? – dotslash

+0

यदि आप वेबपैक टेम्पलेट ('vue init webpack my-project') का उपयोग करके एक नई प्रोजेक्ट शुरू कर रहे हैं, तो आपको "अपना कोड लिंट करने के लिए ESLint का उपयोग करें" का विकल्प मिलेगा, जिसमें आप "n" या नहीं उत्तर दे सकते हैं। यदि आपके पास एक मौजूदा प्रोजेक्ट है जिसमें आप लिटर बंद करना चाहते हैं, तो आप इस चर्चा में सुझावों का प्रयास कर सकते हैं: https://github.com/vuejs-templates/webpack/issues/73 – Mani

+0

मेरे पास एक मौजूदा प्रोजेक्ट था, और क्या मैंने '* .js' पढ़ने के लिए अपना '.llintignore' बदल दिया था। अब यह चाल है! :- पी – dotslash

3

तुम कुछ भी करने के लिए new Vue(...) बयान के मान निर्दिष्ट नहीं कर रहे हैं।

new कथन किसी ऑब्जेक्ट का एक नया उदाहरण बनाता है। आम तौर पर यह उदाहरण एक चर को आवंटित किया जाता है। यदि आप एक चर को आवंटित नहीं करते हैं, तो यह कचरा इकट्ठा किया जाता है।

लिटर यह मानते हुए है कि, चूंकि आप नए उदाहरण का संदर्भ नहीं रखते हैं, तो आप ऑपरेशन से दुष्प्रभाव पर निर्भर हैं, और यह एक बुरा अभ्यास है। साइड इफेक्ट का एक उदाहरण होगा यदि new ऑपरेशन ने वैश्विक चर के मान को संशोधित किया है।

0

यह लाइनर नियम उपयोगी और महत्वपूर्ण है। उदाहरण Vue के लिए - - आप किसी भी ढांचे का उपयोग करते हैं जो नए ऑपरेटर पक्ष प्रभाव का उपयोग करें, द्वारा anonimous समारोह में कवर करने के लिए जोड़ने के लिए अपने कोड

(()=>new Vue({ // no linter directive need anymore 
    el: '#app', 
    router: router, 
    render: h => h(App) 
}))(); 
संबंधित मुद्दे