Gulp Loop在Nunjucks模板中错误地呈现区域设置标记

afdcj2ne  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(102)

我已经创建了一个gulp任务,基于同一个模板为不同的语言/地区生成四个页面。en-USen-CAen-NZen-AU。以前,它只是一个编写四次的简单任务-每个语言环境一次,并写入手动更改。
en-AU是基本URL(没有前缀),其他为website.com/en-us/等。
下面是Gulp任务:

let localeList = Object.keys(config.locales);
let localePaths = Object.values(config.locales);

gulp.task('contentful:blog-page', () => {
    return loadBlogArticles()
      .then((res) => {
        for ( locale in localeList ) {
            var path = `pages/${localePaths[locale].toLowerCase()}` 
            
            if (localeList[locale] === 'enAU') {
                path = 'pages'
            }

            gulp.src('pages/templates/blog.njk')
            .pipe(data(() => ({ items: res.items.map(toBlogArticle(res.includes.Entry, res.includes.Asset)), locale: config.locales[localeList[locale]] })))
            .pipe(nunjucksRender({ path: [config.paths.pages.templates] }))
            .pipe(gulp.dest(path))
        }
      }
      )
      .catch((err) => Promise.reject(new Error(`failed fetching blog articles from contentful: ${err.message ? err.message : JSON.stringify(err)}`)))
});

虽然它在正确的子目录中生成了所有页面,但locale: config.locales[localeList[locale]]给我带来了问题。
它在blog页面上将所有的locale都设置为en-US,但是如果我将console.log(config.locales[localeList[locale]])添加到循环中,它会将它们分别打印出来,这是非常令人费解的。
任何帮助都将不胜感激!

zte4gxcn

zte4gxcn1#

这是一个关闭错误-添加let localeKey = localeList[locale]并将localeList[locale]的其他示例替换为localeKey似乎可以解决此问题。
通过Lesha在下面的评论解决

相关问题