Javascript 在Sapper预加载功能中需要

Javascript 在Sapper预加载功能中需要,javascript,svelte,sapper,Javascript,Svelte,Sapper,我试图在加载页面之前解析一些标记,因此我有以下代码: <script context="module"> var markdown = require( "markdown" ).markdown; export async function preload(page, session) { var someMakrdown = '# Title' var html = markdown.toH

我试图在加载页面之前解析一些标记,因此我有以下代码:

<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>
此操作也会失败,并显示消息
错误解析模块说明符:util

我将代码移动到一个
[slug].json.js
文件中并从预加载中调用它,从而实现了这一点,但是有更好的方法吗


到目前为止,关于Svelte,我最喜欢的一件事就是将每个组件的HTML、CSS和JS保持在一起。我觉得需要调用一个单独的JS文件来创建可以使用的JSON是不对的。

似乎
标记
模块导入了
util
,不适合客户端使用。因为
preload
函数同时运行服务器端和客户端,所以这不好。我的建议是使用不同的库(我可以推荐)和/或在
markdown
bug跟踪器上提出问题。

以防有人需要完整的答案,下面是Rich建议的使用
marked
的方式

<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>

从“标记”进口标记;
设elem='';
导出函数预加载({params,query}){
elem=已标记(“#在服务器或/和浏览器中标记”);
}
{@html元素}

它将在服务器上运行,然后在浏览器中进行后续导航。

我在使用npm faunadb模块时遇到了同样的问题,sapper也遇到了同样的问题。代码在React应用程序中工作。对于这样的情况,是否还有其他解决方法,或者可能是使用汇总或webpack不添加它的情况?我在控制台中看到的示例。”util'由node_modules/faunadb/src/values.js导入,但无法解析–将其视为外部依赖项请不要这样做!您的
preload
功能应该是纯的。在那里进行标记转换而不是在模板本身(即
{@html-marked(markdown)}
)中进行标记转换没有任何好处
<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>