我正在配置一个vue项目。我使用了webpack模板。 (npm install init webpack)。我在终端收到错误 -
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)
})
由于
答案 0 :(得分:15)
该错误来自您的eslint代码格式化程序,而不是来自Vue.js本身。
您的webpack环境配置为在构建和启动应用程序之前验证代码。在这样做时,您的 eslint 会发出警告。
要避免这种情况,请执行以下操作(在 main.js 文件的最后5行中):
new Vue({ // eslint-disable-line no-new
el: '#app',
router: router,
render: h => h(App)
})
您正在执行的操作是仅在上述行中禁用new
的eslint警告。现在您的webpack将正常启动您的应用程序。
另一个选项是在.eslintrc.js
(在项目根文件夹中)中设置规则,您可以在其中指定应忽略no-new
规则。 (在这种情况下不推荐)
答案 1 :(得分:6)
您也可以设置vm var并单独挂载
var vm = new Vue({router, render: h => h(App)})
vm.$mount('#app')
答案 2 :(得分:5)
您没有将new Vue(...)
语句的值分配给任何内容。
new
语句创建对象的新实例。通常,此实例将分配给变量。如果您没有将实例分配给变量,那么它将被垃圾收集。
linter假设,由于你没有保留对新实例的引用,你依赖于操作的副作用,这是一种不好的做法。副作用的一个例子是new
操作是否修改了全局变量的值。
答案 3 :(得分:4)
此班轮规则非常有用且重要。如果您使用任何使用new
运算符副作用的框架(例如Vue),请通过添加三个括号将其包装在匿名函数中
(()=>code)();
代码
(()=>new Vue({ // no linter directive need anymore
el: '#app',
router: router,
render: h => h(App)
}))();