标签: sapper

无法使用 Sapper 导出生成动态路由

我有一条动态路线:

routes/artwork/[slug].svelte.

一切都很好用npm run dev

但是当我npm run export缺少那些动态 slug 路线时。我没有在__sapper__/export.net 中看到它们,并且当我上传到 Netlify 时,页面也丢失了。

有什么线索可以解决这个问题吗?我错过了一些明显的东西吗?

svelte sapper

2
推荐指数
1
解决办法
1149
查看次数

Svelte 当对象动态改变时,每个循环都不会更新

当我尝试动态更改每个循环变量的数据时,不会刷新 DOM 元素。我如何重绘每个循环值

<script>
    // default messages object
     let messages =[{
    "name":"John",
    "message":"Hi",
         "checked": false
  },
  {
    "name":"Anthony",
    "message":"welcome",
         "checked": true
  },
  {
    "name":"David",
    "message":"thank you",
         "checked": false
  }]
 //click function to change the values dynamically 
function test(){
     messages.map(ob=>{
        ob.checked = true;
    })
    console.log(messages)
}
</script>
Run Code Online (Sandbox Code Playgroud)

模板代码

<div>
    {#each messages as m}
    <div>{m.checked}
        <input type="checkbox" bind:checked={m.checked}>
            {m.name}
        </div>
    {/each}
    <br>
    <button on:click={()=>{test()}}> check all values</button>
</div>
Run Code Online (Sandbox Code Playgroud)

片段链接:https : //svelte.dev/repl/887e7e2de4114ec1bb3625c264b9a62c? version =3.24.1

任何帮助,将不胜感激!谢谢 :)

javascript svelte svelte-component sapper svelte-3

2
推荐指数
1
解决办法
1675
查看次数

Sapper/Svelte 可以有条件地导入组件吗?

在 Sapper 中,只有在客户端呈现时(使用onMount),我才尝试导入组件。有没有类似于 ReactSuspense和的 东西React.lazy?还是有另一种方法?

svelte sapper

2
推荐指数
1
解决办法
533
查看次数

错误:在 Heroku 上找不到模块“polka”

我正在尝试将我的 sapper/svelte 应用程序部署到 heroku,但收到“错误:找不到模块 'polka'”这个错误。有趣的是,它非常好并且工作正常。我的 package.json 是正确的,我也没有将我的模块检查到 git 中。我尝试禁用缓存,但没有好处。谁有想法?

2020-09-16T16:04:44.083385+00:00 app[web.1]: Error: Cannot find module 'polka'
2020-09-16T16:04:44.083386+00:00 app[web.1]: Require stack:
2020-09-16T16:04:44.083386+00:00 app[web.1]: - /app/__sapper__/build/server/server.js
2020-09-16T16:04:44.083386+00:00 app[web.1]: - /app/__sapper__/build/index.js
2020-09-16T16:04:44.083387+00:00 app[web.1]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:965:15)
2020-09-16T16:04:44.083392+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:841:27)
2020-09-16T16:04:44.083392+00:00 app[web.1]:     at Module.require (internal/modules/cjs/loader.js:1025:19)
2020-09-16T16:04:44.083393+00:00 app[web.1]:     at require (internal/modules/cjs/helpers.js:72:18)
2020-09-16T16:04:44.083393+00:00 app[web.1]:     at Object.<anonymous> (/app/__sapper__/build/server/server.js:4:13)
2020-09-16T16:04:44.083394+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:1137:30)
2020-09-16T16:04:44.083394+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
2020-09-16T16:04:44.083394+00:00 app[web.1]:     at Module.load (internal/modules/cjs/loader.js:985:32)
2020-09-16T16:04:44.083395+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:878:14)
2020-09-16T16:04:44.083395+00:00 app[web.1]:     at Module.require (internal/modules/cjs/loader.js:1025:19) {
2020-09-16T16:04:44.083396+00:00 …
Run Code Online (Sandbox Code Playgroud)

heroku node.js svelte sapper

2
推荐指数
1
解决办法
378
查看次数

从 S3 加载数据时,我应该如何构建 Sapper/Svelte 路由?

假设我有一堆数据文档,它们是 S3 中的 JSON 文档,每年一个。我通过 dir 结构在 Sapper 中定义了一条路线:

??? routes
?   ??? _error.svelte
?   ??? _layout.svelte
?   ??? about.svelte
?   ??? data
?   ?   ??? [year].svelte
Run Code Online (Sandbox Code Playgroud)

我的script块中的代码:

  let yearData;
  onMount(async () => {
    const f = await fetch(yearDataUrl(year), {
      headers: { 'Access-Control-Allow-Origin': '*' }
    });
    const jsonResults = await f.json();
    yearData = jsonResults;
  });
Run Code Online (Sandbox Code Playgroud)

每个数据集在 S3 中作为[s3 url]/[year here].json。导航栏中有一组链接显示每个数据集。我可以onMount很好地加载数据,但随后单击导航栏链接不会加载新数据。所以onMount很可能是错误的选择。

我应该如何构建它?还值得注意的是,我想将这些页面呈现为静态文件(数据很少更改,尤其是前几年)。

amazon-s3 svelte sapper

1
推荐指数
1
解决办法
1460
查看次数

如何在 Sapper/Svelte 中打开和读取文件

我正在尝试在我的 Sapper 应用程序中打开并读取 .md 文件的目录。我尝试导入,但它不允许字符串表达式(`file${index}.md`)。因此,我尝试通过 fs 节点模块打开并读取文件,但我在服务器中收到以下消息:

\n\n

preferring built-in module 'fs' over local alternative at 'fs', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning\npreferring built-in module 'fs' over local alternative at 'fs', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning\n'fs' is imported by src/routes/blog/[slug].svelte, but could not be resolved \xe2\x80\x93 treating it as an external dependency\n'default' is imported from external module 'fs' but never used

\n

io node.js rollupjs svelte sapper

1
推荐指数
1
解决办法
4079
查看次数

表单提交后重定向用户

我有一个<input type="text" />作为搜索栏的<form>.

因为它是一个搜索栏,所以/search?q=thingIWantToSearch当提交表单时,用户应该被重定向到类似于 : 的路由。

目前我正在做,location.href但我认为这不是一个好方法(或者是吗?)

这是我的代码:

<script>
    let inputValue = '';

    const handleSubmit = () => {
        // there should be some parsing before putting it in the url, but it's not the subject
        location.href = `/search?q=${inputValue}`;
    }
</script>

<form on:submit|preventDefault={handleSubmit}>
    <input type="text" bind:value={inputValue} />
    <button type="submit">submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

那么如何在表单提交时正确重定向用户?

svelte sapper

1
推荐指数
1
解决办法
814
查看次数

Sapper:导航离开带有 kwes.io 表单的页面时,如何修复“parentNode 为 null”?

我正在SapperJS 中使用kwes.io创建一个联系表单。表格本身有效。

但是一旦我登陆联系页面,我就无法使用 Sapper 链接导航离开它,但正常的 https 链接可以工作。

浏览器中的 URL 更改,但内容未加载。然后要加载内容,我必须重新加载页面。

我联系了 Kwes 的支持团队,但他们说这与 Sapper 处理路由的方式有关,无法提供帮助。

我像这样创建了我的表单

<svelte:head>
  <script src="https://kwes.io/js/kwes.js"></script>
</svelte:head>


<div class="kwes-form">
    <form method="POST" action="https://kwes.io/api/foreign/forms/YOUR_FORM_KEY">
        <label for="name">Your Name</label>
        <input type="text" name="name">
        <button type="submit">Submit</button>
    </form>
</div> 
Run Code Online (Sandbox Code Playgroud)

在 Chrome 浏览器控制台上打印

Uncaught (in promise) TypeError: Cannot read property 'removeChild' of null

在 Firefox 控制台上

TypeError: t.parentNode is null

svelte sapper

1
推荐指数
1
解决办法
1069
查看次数

使用 Svelte,如何使用 Javascript 字符串变量填充 &lt;svelte:head&gt; 中的 &lt;style&gt; 标记?

使用 Svelte,我想要完成的是能够html使用我拥有csspost对象的属性来设计我的样式。

我想,没问题,只需在我的svelte:headwith 中添加一个样式标签{post.css}。它会将我的post.css数据直接放入样式标签中,viola',问题解决了。但是,不,问题没有解决。当我在浏览器中查看元素时,我看到

<style>{post.css}</style>

代替

<style>
  p{
    color: purple;
    font-weight: 900;
  }
 </style>
Run Code Online (Sandbox Code Playgroud)

我创建了一个解决办法,我在那里设置innerText了的<style>后标签onMount,但我不喜欢它,宁愿做它一个更清洁的方式。

我想要的是…

<script>
  export let post = {
    html: `<p>This is purple</p>`,
    css : `
      p{
        color: purple;
        font-weight: 900;
      }
    `
    }  
</script>

<svelte:head>
  <style>{post.css}</style>
</svelte:head>

{@html post.html}
Run Code Online (Sandbox Code Playgroud)

我必须做些什么才能让它发挥作用……

<script>
  import { onMount } from "svelte";

  export let post = {
    html: `<p>This is purple</p>`,
    css : …
Run Code Online (Sandbox Code Playgroud)

svelte css-in-js sapper

1
推荐指数
1
解决办法
1126
查看次数

更新 sapper 中的主体背景颜色

我想根据我所在的页面/路线更新正文背景颜色。到目前为止我对此:

//index.svelte
:global(body) {
      background-color:white;
}

//about.svelte
:global(body) {
      background-color:blue;
}
Run Code Online (Sandbox Code Playgroud)

当我从一页转到另一页时,颜色会发生变化,但是当我返回上一页时,颜色不起作用。任何想法 ??

svelte sapper

1
推荐指数
1
解决办法
2314
查看次数

服务器端 API 中未定义 Svelte/Sapper fetch/this.fetch

这是我关于使用 Svelte/Sapper 的问题

  • 我有一个文件在/src/routes/login.js
  • 根据 Sapper 文档,它将在 中创建一个 API 端点http://<my_domain>/login,它会这样做
  • 现在login.js,我想调用另一个API服务器,假设它是http://another_server/auth
  • 无论我如何使用该fetch功能:fetch("http://another_server/auth")、、、this.fetch("http://another_server/auth")Svelte 响应:(this.)fetch is not defined
  • 文档说它应该在 内运行preload(),所以我将 fetch 包裹在 下export async function preload(){},它不起作用

所以我的问题是:除了使用之外axios,我可以继续fetch在服务器端API请求中使用吗?

刚刚在模板[slug].json.js文件中测试,当我添加(this.)fetch函数时,它没有编译,同样的错误:(this.)fetch is not defined

非常感谢。

api svelte sapper

1
推荐指数
1
解决办法
933
查看次数

Svelte 3:通过道具与父母沟通的孩子数组

Svelte 3:道具和子组件数组

我计划根据优秀的redblobgames文章在六角形瓷砖上编写棋盘游戏,并使用 Svelte 3 / Sapper 进行编码。

我的问题是关于子组件与父组件之间通过 props 的通信。我以前使用商店在旧版本的 Svelte 中这样做过,但我想没有它也可以做到这一点。

假设我有一块由 herxagons SVG 瓷砖组成的板。每块的形式为:

<script>
  // 3D coordinate system, see: http://redblobgames.org for details
  export let hex = { q:0, r:0, s: 0 }    
  export let center = { x:0, y: 0 }
  export let corners = []
  export let selected = false

  let points = corners.map (c => `${c.x.toFixed(0)},${c.y.toFixed(0)}`).join (' ')

  // changed by selection process (colors...)
  let inner_class = "inner_tile"

  const toggle_select = () …
Run Code Online (Sandbox Code Playgroud)

javascript components svelte sapper

0
推荐指数
1
解决办法
733
查看次数