我已经使用vue加载器创建了Vuejs应用程序,现在我需要使用如下安装的npm包:
var x = require('package-name')
Vue.use(x)
但是我有一个错误:
Uncaught TypeError: plugin.apply is not a function
dose Vuejs需要一个特殊类型的包,或者它可以与任何JavaScript包一起使用,这个错误可以通过解决
有很多方法。
我添加了@smiller评论,并感谢您分享链接。我在这里添加信息,以防有一天链接不起作用。
此链接的来源:-https://vuejsdevelopers.com/2017/04/22/vue-js-libraries-plugins/
第一种方法当然@crig_h
window.x = require('package-name')
有一定的缺点不适用于服务器渲染。否则,浏览器中的一切都会很好,因为window
对浏览器来说是全局的,任何吸引到它的属性都可以访问整个应用程序。
第二种方法是。
将Import与.vue
文件中的js部分一起使用,如下所示。
如果在".vue"文件中。
<script>
import _ from 'lodash';
export default {
created() {
console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..');
}
}
</script>
如果你有.js
的单独文件,那么像这样我们就没有<script>
标签了。
和第三种方法
在项目中导入vue
的任何位置。你可以写这个声明import Vue from "vue";
import moment from 'moment';
Object.definePrototype(Vue.prototype, '$moment', { value: moment });
这将把相关属性设置为Vue
。你可以在任何类似的地方使用它。由于Vue是应用程序的全球范围。
export default {
created() {
console.log('The time is ' . this.$moment().format("HH:mm"));
}
}
为CSS添加
您可以在vue.js项目的src/main.js文件中进行导入。
import/animate.css'
如果你想在模板中导入。
在模板中,您可以执行此操作。
<style src="./animate.css"></style>
也可以看看css-loader
包。它做什么?
插件是特定的Vue
包,它为Vue
添加了全局级别的功能,因此如果您不使用Vue
插件,则不需要使用Vue.use()
向Vue
注册它。
一般来说,通过npm
使用非vue特定的包没有任何问题,但如果你需要在全球范围内注册一些东西,你通常只需将其附加到window
即可,如下所示:
window.x = require('package-name');
不幸的是,这些答案对我都不起作用,我最终做的是
export default {
computed() {
x () {
return require('package-name')
}
}
}
然后将其用作x.functionName()
或任何
有更好的解决方案。。。首先在main.js 中导入您的包
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
import Vue from "vue";
import App from "./App.vue";
import "package-name";
之后,您在挂载的方法中编码为javascript
<script>
export default {
mounted() {
const any = require("package-name");
// your code as normal js
},
};
</script>