【问题标题】:vue-test-utils problem with native node esm: TypeError: mount is not a function原生节点 esm 的 vue-test-utils 问题:TypeError: mount is not a function
【发布时间】:2019-12-14 09:47:21
【问题描述】:

我正在使用节点的本机 esm 实现来运行测试。

这里有一个重现的最小代码示例。在 package.json 中设置 "type":"module" 或使用 .mjs 扩展名进行测试。节点版本 >= 13.2.0(否则 >= 12.0 和实验标志)

import {mount} from '@vue/test-utils';
// use some minimal vue component
const FooBar = import('foo-bar.vue');
const wrapper = mount(FooBar); 

抛出以下错误:

TypeError: mount is not a function

根据要求,这是我的 package.json

{
  "name": "mk-vue-flex-text",
  "version": "0.0.1",
  "description": "My Vue component",
  "main": "lib/index.js",
  "license": "MIT",
  "scripts": {
    "build": "NODE_ENV=production webpack --mode production --config build/webpack.production.js --progress --hide-modules",
    "dev": "NODE_ENV=development node server.mjs",
    "github:master": "git push origin master",
    "test:esm": "NODE_ENV=test node test/basic.test.mjs | tap-spec",
    "test": "NODE_ENV=test node test/basic.test.js | tap-spec"
  },
  "browserslist": [
    "last 1 version",
    "> 1%",
    "maintained node versions",
    "not dead"
  ],
  "devDependencies": {
    "@babel/cli": "^7.7.5",
    "@babel/core": "^7.7.5",
    "@babel/preset-env": "^7.7.6",
    "@vue/server-test-utils": "^1.0.0-beta.30",
    "@vue/test-utils": "^1.0.0-beta.30",
    "autoprefixer": "^9.7.3",
    "babel-eslint": "^10.0.3",
    "babel-loader": "^8.0.6",
    "browser-env": "^3.3.0",
    "css-loader": "^3.3.0",
    "eslint": "^6.7.0",
    "express": "^4.17.1",
    "mini-css-extract-plugin": "^0.8.0",
    "node-sass": "^4.13.0",
    "resolve-url-loader": "^3.1.1",
    "sass-loader": "^8.0.0",
    "tap-spec": "^5.0.0",
    "tape": "^4.11.0",
    "vue": "^2.6.10",
    "vue-eslint-parser": "^7.0.0",
    "vue-loader": "^15.7.2",
    "vue-loader-plugin": "^1.3.0",
    "vue-template-compiler": "^2.6.10",
    "webpack": "^4.41.2",
    "webpack-dev-middleware": "^3.7.2",
    "webpack-hot-middleware": "^2.25.0",
    "webpack-merge": "^4.2.2"
  }
}

【问题讨论】:

  • 请分享你package.json
  • 我添加了包json

标签: node.js unit-testing vue.js


【解决方案1】:

您的 FooBar import 方法不正确,因此无法正确安装,试试这个。

import {mount} from '@vue/test-utils';
// use some minimal vue component
import FooBar from 'foo-bar.vue';
const wrapper = mount(FooBar); 

【讨论】:

  • 这不是问题。我只是使用了“const FooBar = import('foo-bar.vue')”,以防止它在那时已经崩溃并完全喂食任何东西。您可以忽略导入。我现在担心的是我没有得到“mount”功能。
  • 我没有具体说明,为什么我使用“const FooBar = import('foo-bar.vue')”而不是“import FooBar from 'foo-bar.vue'”。使用 import ... from ... 的问题是节点会阻塞它,因为它无法识别扩展名。但是,正如我所写,这不是我问题的重点。
猜你喜欢
  • 1970-01-01
  • 2018-01-20
  • 2021-05-25
  • 2018-07-25
  • 2022-10-22
  • 2022-10-13
  • 1970-01-01
  • 2020-08-10
  • 2013-11-30
相关资源
最近更新 更多