4

我可以将 Vue-CLI 3 构建命令 ( ) 生成的 web 组件vue-cli-service build --target wc --name foo ./src/App.vue用作网页中的独立组件,如下所示:

<script src="https://unpkg.com/vue"></script>
<script src="./foo.js"></script>

<foo></foo>

但是当我在另一个 Vue 项目中导入这个组件时:

import Vue from 'vue'
import foo from 'foo'

我得到这个错误:

Uncaught ReferenceError: Vue is not defined

Vue CLI 3 文档说:

在 web 组件模式下,Vue 是外部化的。这意味着即使您的代码导入了 Vue,该包也不会捆绑 Vue。该包将假定 Vue 在主机页面上作为全局变量可用。

但是当你想在另一个项目中使用 web 组件时,它并没有说明如何解决这个问题。

你有什么主意吗?

4

2 回答 2

0

实际上,您引用的语句意味着您不需要使用import Vue from 'vue'. Vue 可以用作全局变量,因为它已被脚本添加<script src="https://unpkg.com/vue"></script>.

于 2018-09-05T06:34:11.750 回答
0

实际上,如果你想在 vue-cli 构建的另一个项目中使用组件,首先你应该有一个 index.js(或任何其他名称),在该文件中导出组件,如

export {default as Button} from './button/button'
export {default as ButtonGroup} from './button/button-group'
export {default as Cascader} from './cascader/cascader'

然后更改 package.json 'vue-cli-service build --target wc --name foo ./src/index.js' 中的 'scripts' 你可以将 dist 目录复制到新项目的 node_modules 中,然后使用它(但不推荐)。你可以使用 'npm publish' 它,在你的新项目中,使用 npm install 它

于 2019-05-22T03:15:26.327 回答