我正试图在我的nuxt.js
应用程序中使用pickr
包(一个颜色选择器库(,在导入时它提供了一个名为窗口未定义的错误
这是代码:
<script>
import Pickr from '@simonwep/pickr/dist/pickr.min.js';
let pickr;
export default {
name: "ColorPicker",
mounted(){
pickr = Pickr.create({
el: '.test-picker',
theme: 'classic',
swatches: [
'rgba(244, 67, 54, 1)',
'rgba(233, 30, 99, 0.95)',
],
});
}
}
</script>
尝试过的方法
- 我制作了
pickr
包作为一个nuxt插件,并将其与mode:client
一起添加到nuxt.config.js
中 - 我制作了
pickr
包作为一个nuxt插件,并将其与ssr:false
一起添加到nuxt.config.js
中
但不起作用😥
经过努力,我想出了这种方法,并为我的做了工作
<script>
let PickrInstance;
if(process.browser){
PickrInstance = require('@simonwep/pickr/dist/pickr.min.js')
}
let pickr;
export default {
name: "ColorPicker",
mounted(){
pickr = PickrInstance.create({
el: '.test-picker',
theme: 'classic',
swatches: [
'rgba(244, 67, 54, 1)',
'rgba(233, 30, 99, 0.95)',
],
});
}
}
</script>
您可以尝试将其封装在自定义Vue组件(VComponent.vue
(中,并在仅限客户端的标签中呈现该组件
<client-only>
<v-component />
</client-only>
...
import VComponent from './VComponent';
export default {
components: { VComponent },
}
如果它仍然抛出错误,您可以尝试动态加载自定义组件。使用代替import VComponent from './VComponent'
const VComponent = () => import('./VComponent');