Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Object() is not a function #136

Closed
shenjiuer opened this issue Feb 18, 2022 · 12 comments
Closed

Object() is not a function #136

shenjiuer opened this issue Feb 18, 2022 · 12 comments

Comments

@shenjiuer
Copy link

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

@KesionX
Copy link

KesionX commented Feb 20, 2022

因为require加载之前vue可能还未加载,导致require('vue')错误或获取到错误的vue版本。你可以使用vue-demi-fix修复

@shenjiuer
Copy link
Author

因为require加载之前vue可能还未加载,导致require('vue')错误或获取到错误的vue版本。你可以使用vue-demi-fix修复

感谢

@luo10
Copy link

luo10 commented Mar 11, 2022

你好, 我也碰到了这个问题, 引入vue3使用没啥问题, 引入vue2就报错了.
image
image
编译的时候, 说找不到 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 也没用.

@KesionX
Copy link

KesionX commented Mar 11, 2022

你好,我啥也报道了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

@luo10
Copy link

luo10 commented Mar 12, 2022

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中就不会出现....
能帮忙看看吗? 十分感谢.

@KesionX
Copy link

KesionX commented Mar 12, 2022

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无法使用。

@luo10
Copy link

luo10 commented Mar 13, 2022

@KesionX 我查看了 vue-demi-switch 2 和 vue-demi-switch 3 不同状态打包出来的文件, 发现解析sfc模式的函数, vue2, vue3是不能兼容的...
image
这些函数, 也不是 @vue/composition-api 能解决的...
要兼容的话得用h() 或者 jsx 去写模板文件..

@ChangerHe
Copy link

same question, createElementBlock and some other apis is declared in vue3. It's not exists in @vue/composition-api

@alamhubb
Copy link

alamhubb commented Apr 8, 2022

vue2 not running . Object() is not function ,vue2 not has cearetApp()

我是使用的是vue2版本, 可是vue-demi鉴定出来我的版本 是vue3 isVue2=false,isVue3=true, 这是错误的,我的版本是vue2

@KaygNas
Copy link

KaygNas commented Jun 20, 2022

@KesionX 我查看了 vue-demi-switch 2 和 vue-demi-switch 3 不同状态打包出来的文件, 发现解析sfc模式的函数, vue2, vue3是不能兼容的... image 这些函数, 也不是 @vue/composition-api 能解决的... 要兼容的话得用h() 或者 jsx 去写模板文件..

我最近也遇到了类似的问题,想必你也是尝试直接编译单文件组件(sfc),因为编译过程中涉及到了 sfc-compiler ,但 vue2 和 vue3 的编译器不一样,所以没办法让编译的产物同时在 vue2/3 中运行。

我的解决方式是编译两份,然后模仿 vue-demi 在安装时检测 vue 的版本来决定使用哪一份。

可以看看这个项目模板的 postinstall 。

@xixiaocheng
Copy link

Vue3 lib not working in Vue2 projects #152

我也遇到这样的问题。。。感觉是template的编译问题 如果这个很关键的痛点解决不了 那这个工具的意义何在啊

@sxzz
Copy link
Member

sxzz commented Sep 4, 2022

let's track #152

@sxzz sxzz closed this as not planned Won't fix, can't repro, duplicate, stale Sep 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants