Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Nuxt和合成API中使用lodash_Javascript_Vue.js_Nuxt.js_Lodash_Vue Composition Api - Fatal编程技术网

Javascript 在Nuxt和合成API中使用lodash

Javascript 在Nuxt和合成API中使用lodash,javascript,vue.js,nuxt.js,lodash,vue-composition-api,Javascript,Vue.js,Nuxt.js,Lodash,Vue Composition Api,我正在尝试将lodash与Nuxt2合成API()一起使用 但是,使用useContext()我无法找到任何全局Vue原型函数。所以当我尝试用nuxt模块创建一个模块时。我在useContext()中得到了$lodash。但是当我调用$lodash.all([true,false])时,它说$lodash.all不是一个函数 它使$lodash在nuxt上下文中可用的唯一技巧是使用inject。我正在分享我的设置 //modules/lodash/index.js const path=requ

我正在尝试将lodash与Nuxt2合成API()一起使用

但是,使用
useContext()
我无法找到任何全局Vue原型函数。所以当我尝试用nuxt模块创建一个模块时。我在
useContext()
中得到了
$lodash
。但是当我调用
$lodash.all([true,false])
时,它说$lodash.all不是一个函数

它使$lodash在nuxt上下文中可用的唯一技巧是使用
inject
。我正在分享我的设置

//modules/lodash/index.js
const path=require('路径')
module.exports=函数nuxtLodash(moduleOptions){
const lodashOptions=Object.assign({},this.options.lodash,moduleOptions)
//注册插件
这是addPlugin({
src:path.resolve(uu dirname,'plugin.js'),
ssr:错,
文件名:“lodash.js”,
选项:{
洛达斯选项
}
})
}
//modules/lodash/plugin.js
从“Vue”导入Vue
从“vue lodash”导入VueLodash
从“lodash”导入lodash
use(VueLodash,{name:'$\',lodash})
导出默认函数(ctx、注入){
注入('lodash',lodash)
}
//nuxt.config.js
模块:[
//…其他模块
“~/modules/lodash”
],
现在,当我在CompositionAPI组件中使用它时,我得到了一个错误


进口{
定义组件,
使用上下文
}来自“@nuxtjs/compositionapi”
导出默认定义组件({
设置(){
const{$lodash}=useContext()
console.log($lodash)
log($lodash().all([true,false]))
}
})

有没有合适的方法来使用这个?这里我遗漏了什么?

最简单的方法是通过从“lodash es”导入{all}(并将lodash es安装为依赖项)导入所需的函数。这样,您就不会将整个lodash库添加到包中,也不会出现任何导入问题

导入{
定义组件
}来自“@nuxtjs/compositionapi”
从“lodash es”导入{all}
导出默认定义组件({
设置(){
log(全部([true,false]))
}
})

最后,在库和平台出现了一系列问题之后,我终于能够解决它。造成问题的原因很多

  • 节点14模块问题:
  • 必须使用导入来加载ES模块:
  • 一些ESM问题:
  • 在一系列其他问题之后,用巴别塔加载lodash:

    添加了普通的
    lodash
    和dev
    babel插件lodash
    依赖项

    由于nuxt内置了巴贝尔支持,因此在巴贝尔列表中添加了一个插件:

     build: {
        babel: {
          plugins: ['lodash']
        }
      }
    

    然后它看起来像一个正常的导入工程

    非常感谢你的建议。然而,我有一个错误。我删除了插件和模块,并添加了lodash es模块。但到处都是洛达斯进口声明。现在我遇到了这个错误:
    必须使用导入来加载ES模块
    我的一些模板也直接使用了
    。模板是否可以使用此功能?这是否与以下内容相关:得到了实际问题:因此看起来无法使用lodash es并返回到原始问题