2017-06-14 106 views
3

我正在使用webpack模板來構建一個vuejs應用程序。 的問題是,當我嘗試運行單元測試(目前只是默認一個......)PhantomJS引發此錯誤:PhantomJS在vue中拋出錯

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR 
    TypeError: undefined is not a constructor (evaluating 'val.toLowerCase()') 
    at webpack:///~/vue/dist/vue.esm.js:89:0 <- index.js:13783 

錯誤是指Vue公司庫,一定有什麼錯應用程序的代碼。 上下文的一小部分:我創建了vue組件的展示,所以我配置了webpack跳過生產中的很多文件/文件夾,因爲它們只是展示組件,而我只想在我的核心組件prod構建。

所以結構文件夾如下:

src 
|----components 
|----main.js 
|----assets.js 
|----App.vue 
|----core 
    |----coreComponents 
    |----mainProdBuilder.js 
    |----coreAssets.js 

如果我導入所有的組件,如果我捆綁一切與「main.js」爲切入點,我可以運行測試,沒有任何問題,但是,作爲當我嘗試使用mainProdBuilder腳本捆綁生產文件時,我收到錯誤。這裏的腳本:

import Vue from "vue"; 

import MyTable from "./Table/Table"; 
import FormatNumber from "./numberFormatting"; 
import TotalValue from "./TotalValue"; 
import MyTitle from "./Title/Title"; 
import TestTitle from "./Title/TestTitle"; 
import BarChart from "./Charts/BarChart"; 
import Histogram from "./Charts/Histogram"; 

Vue.component(MyTable, 
    MyTitle, 
    TestTitle, 
    BarChart, 
    TotalValue, 
    Histogram, 
); 

請注意,如果我評論所有的vue組件一次只留下一個組件,它的工作原理。因此,例如這個作品:

import Vue from "vue"; 

import MyTable from "./Table/Table"; 

Vue.component(
    MyTable, 
); 

而且也是這個原理:

import Vue from "vue"; 

import Histogram from "./Charts/Histogram"; 

Vue.component(
    Histogram, 
); 

但這引發錯誤:

import Vue from "vue"; 

import MyTable from "./Table/Table"; 
import Histogram from "./Charts/Histogram"; 

Vue.component(
    MyTable, 
    Histogram 
);  

我缺少什麼?

回答

1

Vue.component()需要一個id(組件的即名稱)和object definition,你無法將所有的全局組件註冊在一起(儘管你可以對本地組件做),你需要單獨註冊它們:

import MyTable from "./Table/Table"; 
import FormatNumber from "./numberFormatting"; 
//etc...  

Vue.component('my-table', MyTable); 
Vue.component('format-number', FormatNumber); 
//etc... 

如果您嘗試註冊使用一個Vue.component你得到你所收到的錯誤,您可以在this JSFiddle

+0

看你是對的先生他們,我要瘋了,謝謝! – ste