Ссылка Пользовательский шаблон продукта - PullRequest
1 голос
/ 28 мая 2019

Согласно документации, https://developer.bigcommerce.com/stencil-docs/development-quickstart/rendering-html-with-ajax, Я могу создать пользовательский шаблон на основе файла компонента, например products / product-view

Что такое базовая страница, содержащая фронтальную информациюдля рендеринга этих компонентов?

Компонент, который я пытаюсь отобразить, не вызывается ни с одной html-страницы с использованием {{ > component/products/quicker-page }}.Похоже, это означает, что он не будет включен в ./manifest.json и является основной причиной ошибки, отображаемой в stencil-cli при вызове getPage API.

window.stencilUtils.api.getPage('/product-1/', { 
  "template": "products/quicker-view" 
}, 
(err, content) => { 
  console.log(content); 
});

Ошибка

TypeError: Uncaught error: Cannot read property 'components/products/quicker-view' of undefined
at TemplateAssembler.assemble (C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\server\plugins\renderer\renderer.module.js:466:26)
at getTemplatePaths (C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\lib\template-assembler.js:28:20)
at Async.each.err (C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\lib\template-assembler.js:93:20)
at C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\node_modules\async\dist\async.js:473:16
at iteratorCallback (C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\node_modules\async\dist\async.js:1064:13)
at C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\node_modules\async\dist\async.js:969:16
at ReadFileContext.Fs.readFile (C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\lib\template-assembler.js:114:24)
at ReadFileContext.callback (C:\Users\bigcommerce\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\node_modules\graceful-fs\graceful-fs.js:90:16)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:420:13)

1 Ответ

1 голос
/ 04 июня 2019

Я редактировал тему, отличную от той, с которой работал трафарет.

Добавил некоторые записи в stencil-cli, откуда происходило исключение (необходимо перезапустить трафарет между правками этих файлов)

C:\Users\username\AppData\Roaming\nvm\v8.12.0\node_modules\@bigcommerce\stencil-cli\server\plugins\renderer\renderer.module.js

internals.themeAssembler = {
    getTemplates: (path, processor, callback) => {
        // begin add
        console.log(internals.getThemeTemplatesPath(), path);
        // end add
        TemplateAssembler.assemble(internals.getThemeTemplatesPath(), path, (err, templates) => {
            // begin add
            if (!templates) {
                console.log('templates is empty')
            }
            // end add
            if (templates[path]) {
                // Check if the string includes frontmatter configuration and remove it
                var match = templates[path].match(/---\r?\n[\S\s]*\r?\n---\r?\n([\S\s]*)$/);

                if (_.isObject(match) && match[1]) {
                    templates[path] = match[1];
                }
            }

            callback(null, processor(templates));
        });
    },
    getTranslations: (callback) => {
        LangAssembler.assemble((err, translations) => {
            callback(null, _.mapValues(translations, locales => JSON.parse(locales)));
        });
    },
};
...