问题标签 [sapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
930 浏览

svelte - _layout.svelte 如何知道它是否在错误页面中?

segmentin 变量_layout.svelte适用于undefined主页和错误页面。我想为这些页面以不同的方式呈现页面,但无法在_layout.svelte.

0 投票
2 回答
6026 浏览

javascript - 使用 Sapper,如何在出现 404 错误时重定向到索引页面?

在出现 404 错误时,我不想显示 404 页面。相反,如果用户已登录,我想重定向回索引页面,如果用户已注销,我想重定向回登录页面。如果未登录,我已经能够将用户从索引页面路由到登录页面,所以我可能只需要重定向到索引页面并让它负责重新路由到登录页面,尽管那必须进行两次重新路由似乎效率低下。

我可以通过将routes/_error.svelte页面重写到这个来完成它......

但我不太相信这是完成我想做的事情的最佳方式。它还重定向所有错误,在未来的项目中,我可能希望显示某些错误,例如 404,但重定向其他错误,例如 500。

有没有人对如何使用 Sapper 更好地实现这一点有一些见解?

0 投票
4 回答
1230 浏览

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

我有一条动态路线:

routes/artwork/[slug].svelte.

一切都很好npm run dev

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

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

0 投票
1 回答
2872 浏览

node.js - 如何在 Sapper/Svelte 中打开和读取文件

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

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

0 投票
1 回答
1251 浏览

svelte - 表单提交后重定向用户

<input type="text" /><form>.

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

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

这是我的代码:

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

0 投票
4 回答
2014 浏览

npm - 使用 sapper 在 Svelte 项目中配置输出目录

我收到一个错误,*Error: No output directory named "export" found.*,Now与 SvelteJS 项目和 Sapper 一起使用。我试图查找有关如何将文件夹添加到文件中的信息,package.json但结果为空。(仍在学习这一切是如何工作的。在Now文档中,我得到了这个: 要解决此错误,请配置您的项目以将其静态输出文件放在项目根目录的公共目录中,当您的package.json文件中的构建脚本被调用。

我努力了:

但没有运气。希望能帮助您使其正常工作。

0 投票
1 回答
712 浏览

ios - 是否可以将 Svelte/Sapper 应用程序转换为 Cordova

我们有用 Svelte/Sapper 编写的 PWA 应用程序,我们希望在移动平台上转换这个应用程序。由于某些业务原因,我们需要在 Android 和 iOS 商店中明确应用。

  • 在 Android 情况下很容易。我们将使用 Google TWA,一切都会很好。
  • 在 Apple iOS 上,我觉得这很困难。没有适用于 iOS 的 Google TWA 之类的东西。而且苹果商店的大量要求也会很痛苦。

小提示:我们不需要移动平台上的任何原生 API。纯 JavaScript 浏览器 API 对我们来说已经足够了。

所以我找到了我认为最适合我们的问题的 Apache Cordova 项目,并且我找到了 Svelte 的模板syonip/svelte-cordova-template。但这还不够。模板正在解决 Svelte 但不是 Sapper。

最好的情况是我下载了一些 Cordova/Svelte/Sapper 模板,复制现有的源代码,在途中修复一些问题,将应用程序导出到 xCode 项目,构建它,它将在 iOS 上运行而没有任何重大问题(当然我预计会进行一些代码更改,但不会完全重写应用程序)。

您是否对 Svelte/Sapper -> Cordova 迁移有一些经验?

Edit1:我认为可以使用 Sapperexport功能并将构建的文件传递给 Cordova。当用户手动更改 URL 地址时,它会出现一些问题,例如无法正常运行路由(但对于这个特定的用例 - 移动应用程序 - 这不是问题,因为用户将无法编辑 URL)。服务器端渲染、预加载和预取也是不可能的。

Edit2:经过一番挖掘,我认为不可能将 Sapper 应用程序转换为 Cordova。Sapper 中的代码拆分存在很多问题。最大的问题发生在 CORS 策略上,事实上 Sapper 应用程序旨在与服务器和域一起使用,而不是来自文件系统。也许可以在 Cordova 中使用一些隐藏的本地主机服务器来提供文件,但这会带来问题并且非常讨厌。

Edit3:我们将现有的 Svelte/Sapper 代码库与 Flutter 和 Google TWA 一起使用。Flutter 应用程序包含引用前端应用程序的公共 URL 地址的 webview。

0 投票
2 回答
2755 浏览

express - 在 Sapper 路由或 sapper 中间件中使用 passportjs passport.authenticate()

我过去将passportjs与expressjs一起使用,目前我正在尝试将它与Sapper应用程序合并,但我无法弄清楚如何在我的路线中包含passport.authenticate(),因为它是sapper路线而不是快速路线。此外,如果我尝试运行 server.js 文件中的所有内容,我会遇到如何将其与 sapper 中间件集成的问题。您如何在 Sapper 中间件或 sapper 路由 js 文件中使用 passport.authenticate()(这是前端而不是服务器路由)?

我的 server.js 是典型的:

正如你所看到的,Sapper 只是一个中间件,所以如果我想验证一个用户并将其发送到前端/sapper,我需要弄清楚如何在中间件函数中运行 passport.authenticate(),对吧?

如果我想在路由 JS 文件中使用护照,这是 sapper front route:

有任何想法吗?如果有人可以提供帮助,我们将不胜感激。

0 投票
1 回答
120 浏览

javascript - 使用 sapper json 路由导出默认函数

从sapper官方模板开始,我想export default按照建议使用 eslint:

我有以下错误:

如果我删除default关键字,一切都会按预期工作。

这是一个 eslint 错误,我不应该在default这里使用关键字,还是我的更改有问题?

0 投票
2 回答
3681 浏览

javascript - 在 Sapper 应用程序中存储用户会话的位置

我已经开始将应用程序从 React 转移到 Sapper。我是 SSR 架构的新手,想知道存储用户会话和数据的最佳方式是什么。

我将 Firebase 用于我的身份验证和数据库。使用客户端 Firebase API 获取会话密钥和其他用户数据后,我将如何存储数据?我看过一些制作 user.js 存储的教程,但在 Sapper 文档中我看到它建议使用session store。那么哪个更好呢?从客户端到服务器端会话存储的流程是什么?

例如,如果我要创建一个登录文件夹,在该文件夹下有 svelte 组件和服务器端路由。是否会有一个设置 session.user 的帖子“端点”?