javascript - PhantomJS 在 vue 中抛出错误

标签 javascript webpack phantomjs vue.js

我正在使用 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
 );    

我错过了什么?

最佳答案

Vue.component() 接受一个id(即组件的名称)和一个对象定义,你不能注册你所有的全局组件在一起(虽然你可以为本地组件做),你需要单独注册它们:

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 中看到。

关于javascript - PhantomJS 在 vue 中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44545497/

相关文章:

javascript - 使用 PhantomJS 迭代 ID 并为每个 ID 生成报告 pdf

javascript - 展开一个子菜单其他人应该自动隐藏在 jquery 中

node.js - `webpack`函数有什么作用?

javascript - Highcharts 服务器端图像生成,如何在回调参数中设置图例 labelFormatter

webpack - 如何使用 webpack 5 处理 SharedWorker 代码升级?

javascript - 无法用 'webpack' 替换命令 'npm run build'

c# - 如何防止 phantomjs webdriver 耗尽我的所有端口

javascript - 为什么我的 Angular 前端不能将正确的 $http.get 参数传递给 Django 后端?

javascript - onChange 不会在 Safari 中的下拉列表中触发,但适用于 IE、FF、Chrome 和 Opera

javascript - 我可以将 JQuery 与内联 html 一起使用吗?如果是这样怎么办?