无法将 vue 相关的 npm 包包含到我的 Laravel + Vue 项目中

Posted

技术标签:

【中文标题】无法将 vue 相关的 npm 包包含到我的 Laravel + Vue 项目中【英文标题】:Can't include vue related npm package to my Laravel + Vue project 【发布时间】:2019-09-12 12:07:48 【问题描述】:

我想在我的 Laravel + Vue 应用程序中包含漂亮的 Flash 消息,所以我在 GitHub 上找到了一个 npm 包并将其安装在我的应用程序中(npm install)

我是 VueJs 的初学者,我遇到了一个问题:我无法在我的 vue 组件中使用该包,因为当我尝试包含它时它会引发错误

我用什么和我得到什么:

这是我的 app.js 代码

window.Vue = require('vue');

/*including the package*/
import FlashMessage from '@smartweb/vue-flash-message';
Vue.use(FlashMessage);
/*including the package*/

Vue.component('settings-form',require('./components/SettingsFormComponent.vue').default);
Vue.component('profile-nav',require('./components/ProfileNavComponent.vue').default);

const app = new Vue(
    el: '#app',
);

我在使用代码时遇到了什么错误:

“TypeError: Cannot read property 'flashMessage' of undefined at app.js:1863”

当我想输出消息时,我运行这个方法(flashMessage):

我还尝试在我的 app.js 中使用此代码来包含包:

Vue.component('FlashMessage', require('@smartweb/vue-flash-message').default);

但它也不起作用,它会抛出这个错误: “未能挂载组件:模板或渲染函数未定义...”

我正在尝试以这种方式使用我的组件(在 ProfileNavComponent.vue 中):

 <FlashMessage></FlashMessage>

你能告诉我问题出在哪里吗? 谢谢大家的帮助) 我真的很感激!

【问题讨论】:

【参考方案1】:

我是这个包的作者。如果您对此有任何问题,请在github上留下问题:https://github.com/smwbtech/vue-flash-message/issues

关于你的问题,我想是函数上下文问题。尝试使用箭头函数作为 .then 的回调

axios.post('/api/post/', body)
  .then( res => 
    this.flashMessage(/*your message*/);
    this.data = '';/*other actions with your component data*/
  )
  .catch(e);

【讨论】:

【参考方案2】:

我通常使用vue包从包名中添加它们,试试:

import FlashMessage from 'vue-flash-message';

而当你想使用组件时,尝试使用FlashMessage.show()

【讨论】:

【参考方案3】:

这就是我将包取消包含到我的项目中的方式

在 app.js 中我添加了该代码:

import FlashMessage from '@smartweb/vue-flash-message';
Vue.use(FlashMessage, tag: 'flash-message', strategy: 'multiple');

然后在我想使用 flashMessages 的任何组件中,我使用如下代码:

  this.flashMessage.success(
   title: 'New Friend!',
   message: data.user_created_by.full_name + ' started chatting with you!',
   time: 5000,
   blockClass: 'image-uploaded-flash',
 );

非常感谢所有愿意帮助我的人!!!

【讨论】:

以上是关于无法将 vue 相关的 npm 包包含到我的 Laravel + Vue 项目中的主要内容,如果未能解决你的问题,请参考以下文章

Vue JS NPM 模块导入组件

如何将通过 npm 安装的所有依赖项保存到我的 package.json 文件中?

无法将 npm 包添加到 nuxt js [vue-star-rating]

无法从 Github 发布 npm 包?

Firebase NPM 包无法在 vue 3 上编译

Laravel如何导入通过NPM安装的vuejs包