类型错误:vue.openBlock 不是函数,而使用自定义节点模块中的 vue 组件

Sam*_*Sam 5 javascript node-modules vue.js

我创建了支持 vue 的自定义节点模块。

包.json

{
 "name": "test-node-module",
 "version": "1.0.0",
 "description": "",
 "main": "./dist/index",
 "scripts": {
   "dev": "vue serve test.vue",
   "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "Sam",
 "license": "ISC",
 "devDependencies": {
   "@vue/compiler-sfc": "^3.0.0-beta.15",
   "bili": "^5.0.5",
   "rollup-plugin-vue": "^6.0.0-beta.6",
   "vue-template-compiler": "^2.6.11"
 }
}
Run Code Online (Sandbox Code Playgroud)

索引.js

import test from "./test.vue"

 export default {
   install(Vue, options) {
     Vue.component("test", test);
   }
 }
Run Code Online (Sandbox Code Playgroud)

test.vue有简单的文本。

在我的项目中的main.js

import Test from "test-node-module"

Vue.use(Test)
Run Code Online (Sandbox Code Playgroud)

使用该组件会<test></test>显示这样的错误。

[Vue warn]: Error in render: "TypeError: vue.openBlock is not a function"
Run Code Online (Sandbox Code Playgroud)

在自定义节点结节中,这是 dist/index.js 文件的样子。

'use strict';

 var vue = require('vue');

 var script = {};

 function render(_ctx, _cache) {
   return (vue.openBlock(), vue.createBlock("div", null, " Test123 "))   // Error is here...
 }

 script.render = render;

 var index = {
   install: function install(Vue, options) {
     Vue.component("test", script);
   }
 };

 module.exports = index;
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我错过了什么吗?

bla*_*laz 9

最新版本rollup-plugin-vue需要 Vue 3 才能正常运行,而 Vue-cli 安装 Vue v2。有 2 个选项:在您的项目中安装 Vue 3 或使用旧版本的rollup-plugin-vue.

目前 5.0.0 版本对我有用:

"rollup-plugin-vue": "5.0.0",
Run Code Online (Sandbox Code Playgroud)

这是包的一个已知问题,尚未收到官方回复 https://github.com/vuejs/rollup-plugin-vue/issues/363