javascript - 尽管在 package.json 中传递了 --single 标志,但手动输入 URL 或刷新时,page.js 带有细长的“未找到请求的 URL”
问题描述
我是整个 Javascript 和 svelte 生态系统的新手,我正在尝试使用 svelte.js 构建一个应用程序并使用烧瓶来服务它。问题是我The requested URL was not found
手动输入路径或刷新页面时遇到的问题。尽管在 package.json 中传递了 --single 标志,但仍会发生这种情况。奇怪的是,我只有在路由有相关参数时才会遇到这个问题,例如。/article/:id
. 但是,如果我手动输入路径/article
或刷新它,则没有问题。
这是 package.json 的片段
{
"name": "svelte-app",
"version": "1.0.0",
"scripts": {
"build": "rollup -c",
"dev": "rollup -c -w",
"start": "sirv public --single",
"start:dev": "sirv public --dev --single"
},
"devDependencies": {
"rollup": "^2.3.4",
"rollup-plugin-livereload": "^2.0.0",
},
"dependencies": {
"gridjs": "^5.0.2",
}
}
这是我的 App.svelte 文件的片段
<script>
import {onMount} from 'svelte';
import page from 'page';
import Home from './pages/Home.svelte';
import ArticleOverview from './pages/ArticleOverview.svelte';
import SingleArticle from './pages/SingleArticle.svelte';
let current;
let params;
onMount(async () => {
const res = await fetch(`/some_api`);
const outcome = await res.json().then((outputDetails) => {
console.log(outputDetails);
});
});
page('/', () => (current = Home));
page('/article', () => (current = ArticleOverview));
page('/article/:id',
(ctx, next) => {
params = ctx.params
next()
},
() => (current = SingleArticle));
page('/*', () => (current = NotFound));
page.start();
</script>
<svelte:component this="{current}" params="{params}"/>
解决方案
问题在于烧瓶路线。我添加了一条额外的路线,它奏效了。
以前的路线:
@authoring.route('/', defaults={'path': ''})
@authoring.route('/<path:path>')
@authoring.route('/<string:path>')
@authoring.route('/<path:path>')
@authenticated_view
def catch_all(path):
return authoring.send_static_file("index.html")
添加了以开头的路线/article/<path:path>
@authoring.route('/', defaults={'path': ''})
@authoring.route('/<path:path>')
@authoring.route('/<string:path>')
@authoring.route('/<path:path>')
@authoring.route('/workspace/<path:path>')
@authenticated_view
def catch_all(path):
return authoring.send_static_file("index.html")
不知何故,图像没有加载,但应该不是一个大问题。
推荐阅读
- arrays - 反应:如何在我的菜单部分显示我的道具数据
- laravel - 无法将数据插入从 laravel 发送的 vue select
- android - Android程序甚至在打开之前就崩溃了
- javascript - 如何使 html canvas 撤消和重做功能?
- selenium-webdriver - 如何通过 selenium 上传多个文件
- vue.js - 使用 vue.js 更新 v-for 循环中的字段
- verilog - 我的 Verilog 输出测试结果为 x
- python - Apyori相关性测量
- opengl - 无法安装 soil.h 库
- sql - 将 LISTAGG 转换为 XMLAGG Oracle