требуется в функции предварительной нагрузки Sapper - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь проанализировать некоторую уценку перед загрузкой страницы, поэтому у меня есть следующий код:

<script context="module">
    var markdown = require( "markdown" ).markdown;

    export async function preload(page, session) {
        var someMakrdown = '# Title'
        var html = markdown.toHTML(someMakrdown)
        return {post : html}
    }
</script>

Это не удается с 500 и сообщением: require is not defined

I также пробовали использовать импорт следующим образом:

<script context="module">
    import {markdown} from 'markdown';

    export async function preload(page, session) {
        var someMakrdown = '# Title'
        var html = markdown.toHTML(someMakrdown)
        return {post : html}
    }
</script>

Это также не удается с 500 и сообщением Error resolving module specifier: util

Я получил это, чтобы работать, переместив код в [slug].json.js и вызывает его из предварительной загрузки, но есть ли лучший способ сделать это?

Одна из вещей, которые мне до сих пор нравились в Svelte, - это сохранение HTML, CSS и JS вместе для каждого компонента. Мне кажется неправильным, что мне нужно вызвать отдельный файл JS для создания JSON, который затем можно использовать.

Ответы [ 2 ]

1 голос
/ 23 июля 2020

На всякий случай, если кому-то нужен полный ответ, вот как это выглядит с использованием marked, предложенного Rich.

<script context="module">
    import marked from 'marked';
    let elem = '';
    export function preload({ params, query }) {
        elem = marked('# Marked in the server or/and browser');
    }
</script>

<div>{@html elem}</div>

Он будет запущен на сервере, а затем, для последующей навигации, в браузере.

1 голос
/ 13 июля 2020

Похоже, что модуль markdown импортирует util, что делает его непригодным для использования на стороне клиента. Поскольку функции preload выполняются как на стороне сервера, так и на стороне клиента, это не годится. Я предлагаю вместо этого использовать другую библиотеку (я могу порекомендовать с пометкой ) и / или поднять проблему в системе отслеживания ошибок markdown.

...