我正在使用webpack模板构建vuejs应用程序。 问题是,当我尝试运行单元测试时(现在只是默认的...)PhantomJS抛出此错误:
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来跳过生成的生产中的很多文件/文件夹,因为它们只是展示组件,而我只想要我的生产中的核心组件建立。
所以结构文件夹如下:
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
);
我错过了什么?
答案 0 :(得分: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