vue-demi
vue-demi copied to clipboard
Object() is not a function
当配置项目 webpack 的 externals 选项,将 vue 排除在 vendor 之外时, postinstall 执行会导致获取 vue 的版本出错,从而导致页面出现Object() is not a function 的问题

因为require加载之前vue可能还未加载,导致require('vue')错误或获取到错误的vue版本。你可以使用vue-demi-fix修复
因为require加载之前vue可能还未加载,导致require('vue')错误或获取到错误的vue版本。你可以使用vue-demi-fix修复
感谢
你好, 我也碰到了这个问题, 引入vue3使用没啥问题, 引入vue2就报错了.
编译的时候, 说找不到 vue.
我的vite.config.ts
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import Unocss from "unocss/vite";
// https://vitejs.dev/config/
export default defineConfig({
build: {
lib: {
entry: "./src/index.ts",
name: "ApeBricks",
fileName: (format) => `ape-bricks.${format}.js`,
},
rollupOptions: {
external: ["vue", "lodash-es"],
output: {
globals: {
vue: "Vue",
},
},
},
},
optimizeDeps: {
exclude: ["vue-demi"],
},
plugins: [vue()],
});
在vue2中 执行 npx vue-demi-fix 也没用.
你好,我啥也报道了vue,引入了这个问题,引入vue2就错了。 的时候,找不到vue。
![]()
我的vite.config.ts
import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import Unocss from "unocss/vite"; // https://vitejs.dev/config/ export default defineConfig({ build: { lib: { entry: "./src/index.ts", name: "ApeBricks", fileName: (format) => `ape-bricks.${format}.js`, }, rollupOptions: { external: ["vue", "lodash-es"], output: { globals: { vue: "Vue", }, }, }, }, optimizeDeps: { exclude: ["vue-demi"], }, plugins: [vue()], });在 vue2 中执行 npx vue-demi-fix 没有用。
hello,你可能可以尝试npx vue-demi-switch 2,如果还是不行的话,应该是软链接的问题,bin下的命令对应的vue-demi可能是另外一个包的,你得看下是否存在其他npm包引用了vue-demi
hello,你可能可以尝试npx vue-demi-switch 2,如果还是不行的话,应该是软链接的问题,bin下的命令对应的vue-demi可能是另外一个包的,你得看下是否存在其他npm包引用了vue-demi
@KesionX hello, 我觉得可能是打包的问题? https://github.com/luo10/vue-demi-test 我传了个简单的例子, vue3-components打包完, 在vue2-use中使用yalc引入, 就会出现vue找不到的问题, 但是在vue3-use中就不会出现.... 能帮忙看看吗? 十分感谢.
hello,你可能可以尝试npx vue-demi-switch 2,如果还是不行的话,应该是软链接的问题,bin下的命令对应的vue-demi可能是另外一个包的,你得看下是否存在其他npm包引用了vue-demi
@KesionX hello, 我觉得可能是打包的问题? https://github.com/luo10/vue-demi-test 我传了个简单的例子, vue3-components打包完, 在vue2-use中使用yalc引入, 就会出现vue找不到的问题, 但是在vue3-use中就不会出现.... 能帮忙看看吗? 十分感谢.
hello 我看了demo,因为你在 vue3-components 中devDependencies使用了"vue": "^3.2.25",vue3-components打包出来的已经是vue3的了,自然在vue2-use无法使用。
@KesionX 我查看了 vue-demi-switch 2 和 vue-demi-switch 3 不同状态打包出来的文件, 发现解析sfc模式的函数, vue2, vue3是不能兼容的...
这些函数, 也不是 @vue/composition-api 能解决的...
要兼容的话得用h() 或者 jsx 去写模板文件..
same question, createElementBlock and some other apis is declared in vue3. It's not exists in @vue/composition-api
vue2 not running . Object() is not function ,vue2 not has cearetApp()
我是使用的是vue2版本, 可是vue-demi鉴定出来我的版本 是vue3 isVue2=false,isVue3=true, 这是错误的,我的版本是vue2
@KesionX 我查看了 vue-demi-switch 2 和 vue-demi-switch 3 不同状态打包出来的文件, 发现解析sfc模式的函数, vue2, vue3是不能兼容的...
这些函数, 也不是 @vue/composition-api 能解决的... 要兼容的话得用h() 或者 jsx 去写模板文件..
我最近也遇到了类似的问题,想必你也是尝试直接编译单文件组件(sfc),因为编译过程中涉及到了 sfc-compiler ,但 vue2 和 vue3 的编译器不一样,所以没办法让编译的产物同时在 vue2/3 中运行。
我的解决方式是编译两份,然后模仿 vue-demi 在安装时检测 vue 的版本来决定使用哪一份。
可以看看这个项目模板的 postinstall 。
Vue3 lib not working in Vue2 projects #152
我也遇到这样的问题。。。感觉是template的编译问题 如果这个很关键的痛点解决不了 那这个工具的意义何在啊
let's track #152