Vue.js 如何在asyncData nuxtjs中获取上下文和环境变量

Vue.js 如何在asyncData nuxtjs中获取上下文和环境变量,vue.js,vuejs2,nuxt.js,Vue.js,Vuejs2,Nuxt.js,我正在我的nuxt应用程序中创建一个博客,从contentful中提取数据。我一直在关注这个问题,现在我可以很好地得到它,但我似乎无法同时获得我设置的从asyncData参数返回的上下文和环境变量 我创建了一个json文件,如下所示 .contentful.json 然后在我的nuxt.config.js中 现在基本上在我的组件中,我一直在尝试这样做 asyncData(context, {env}) { return Promise.all([ client.getEn

我正在我的nuxt应用程序中创建一个博客,从contentful中提取数据。我一直在关注这个问题,现在我可以很好地得到它,但我似乎无法同时获得我设置的从asyncData参数返回的上下文和环境变量

我创建了一个json文件,如下所示

.contentful.json

然后在我的nuxt.config.js中

现在基本上在我的组件中,我一直在尝试这样做

asyncData(context, {env}) {
    return Promise.all([
        client.getEntries({
            'content_type': env.CTF_BLOG_POST_ITEM,
            order: '-sys.createdAt'
        })
    ]).then(([posts]) => {
        console.log(context);
        return {
            posts: posts.items
        }
    })
},
但是当我运行这个程序时,如果我从参数中获取上下文,我就无法读取未定义的属性CTF_BLOG_POST_项,反之亦然,如果我获取{env},我就获取上下文

我怎样才能两者都得到


谢谢

的第一个主要参数是。env是上下文对象的属性。您可以作为context.env访问它,而无需使用。您的示例可以按照以下方式重写,而无需使用对象重组分配:

asyncData(context) {
    return Promise.all([
        client.getEntries({
            'content_type': context.env.CTF_BLOG_POST_ITEM,
            order: '-sys.createdAt'
        })
    ]).then(([posts]) => {
        console.log(context);
        console.log(context.env);
        return {
            posts: posts.items
        }
    })
},
签名asyncDatacontext,{env}{不正确,因为您正在添加第二个参数,{env},该参数不以任何方式引用上述上下文对象。如果您只需要上下文中的env,则可以使用以下方式提取此属性,正如您在删除第一个参数时所述:

 asyncData({env}) {
    return Promise.all([
        client.getEntries({
            'content_type': context.env.CTF_BLOG_POST_ITEM,
            order: '-sys.createdAt'
        })
    ]).then(([posts]) => {
        console.log(context);
        console.log(context.env);
        return {
            posts: posts.items
        }
    })
},
如果需要其他上下文对象属性,请使用object destructuring assignment.Tt如下所示:

asyncData({env, params, req, res}) {
否则,只需将context作为第一个/主参数传递并重新构造,即可访问context.env、context.params等属性


希望这会有所帮助!

此节点包肯定会有所帮助
 asyncData({env}) {
    return Promise.all([
        client.getEntries({
            'content_type': context.env.CTF_BLOG_POST_ITEM,
            order: '-sys.createdAt'
        })
    ]).then(([posts]) => {
        console.log(context);
        console.log(context.env);
        return {
            posts: posts.items
        }
    })
},
asyncData({env, params, req, res}) {