Skip to content

Commit 32ed4af

Browse files
authored
Merge pull request #28 from ut-code/fix-ssr-error
エラー修正
2 parents 5024ee1 + ecf4a43 commit 32ed4af

File tree

4 files changed

+29
-24
lines changed

4 files changed

+29
-24
lines changed

app/[docs_id]/markdown.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import remarkGfm from "remark-gfm";
33
import SyntaxHighlighter from "react-syntax-highlighter";
44
import { PythonEmbeddedTerminal } from "../terminal/python/embedded";
55
import { Heading } from "./section";
6-
import { AceLang, EditorComponent } from "../terminal/editor";
6+
import { type AceLang, EditorComponent } from "../terminal/editor";
77
import { ExecFile, ExecLang } from "../terminal/exec";
88
import { tomorrow } from "react-syntax-highlighter/dist/esm/styles/hljs";
99

app/[docs_id]/page.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { readFile } from "node:fs/promises";
44
import { join } from "node:path";
55
import { MarkdownSection, splitMarkdown } from "./splitMarkdown";
66
import { Section } from "./section";
7-
import * as pyodideLock from "pyodide/pyodide-lock.json";
7+
import pyodideLock from "pyodide/pyodide-lock.json";
88

99
export default async function Page({
1010
params,
@@ -22,9 +22,14 @@ export default async function Page({
2222
);
2323
} else {
2424
const cfAssets = getCloudflareContext().env.ASSETS;
25-
mdContent = await cfAssets!
26-
.fetch(`https://assets.local/docs/${docs_id}.md`)
27-
.then((res) => res.text());
25+
const mdRes = await cfAssets!.fetch(
26+
`https://assets.local/docs/${docs_id}.md`
27+
);
28+
if (mdRes.ok) {
29+
mdContent = await mdRes.text();
30+
} else {
31+
notFound();
32+
}
2833
}
2934
} catch (error) {
3035
console.error(error);

app/terminal/editor.tsx

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
"use client";
22

3-
import { useFile } from "./file";
4-
import AceEditor from "react-ace";
3+
import dynamic from "next/dynamic";
4+
// https://github.com/securingsincity/react-ace/issues/27 により普通のimportができない
5+
const AceEditor = dynamic(async () => {
6+
const ace = await import("react-ace");
7+
// テーマは色分けが今のTerminal側のハイライト(highlight.js)の実装に近いものを適当に選んだ
8+
await import("ace-builds/src-min-noconflict/theme-tomorrow");
9+
await import("ace-builds/src-min-noconflict/theme-twilight");
10+
await import("ace-builds/src-min-noconflict/ext-language_tools");
11+
await import("ace-builds/src-min-noconflict/ext-searchbox");
12+
await import("ace-builds/src-min-noconflict/mode-python");
13+
await import("ace-builds/src-min-noconflict/mode-c_cpp");
14+
await import("ace-builds/src-min-noconflict/mode-json");
15+
await import("ace-builds/src-min-noconflict/mode-csv");
16+
await import("ace-builds/src-min-noconflict/mode-text");
17+
return ace;
18+
}, { ssr: false });
519
import "./editor.css";
6-
// テーマは色分けが今のTerminal側のハイライト(highlight.js)の実装に近いものを適当に選んだ
7-
import "ace-builds/src-min-noconflict/theme-tomorrow";
8-
import "ace-builds/src-min-noconflict/theme-twilight";
9-
import "ace-builds/src-min-noconflict/ext-language_tools";
10-
import "ace-builds/src-min-noconflict/ext-searchbox";
11-
import "ace-builds/src-min-noconflict/mode-python";
12-
import "ace-builds/src-min-noconflict/mode-c_cpp";
13-
import "ace-builds/src-min-noconflict/mode-json";
14-
import "ace-builds/src-min-noconflict/mode-csv";
15-
import "ace-builds/src-min-noconflict/mode-text";
20+
import { useFile } from "./file";
1621
import { useEffect } from "react";
1722
import { useSectionCode } from "../[docs_id]/section";
1823
import clsx from "clsx";
@@ -38,13 +43,7 @@ export function EditorComponent(props: EditorProps) {
3843
writeFile(props.filename, props.initContent);
3944
}
4045
addSectionFile?.(props.filename);
41-
}, [
42-
files,
43-
props.filename,
44-
props.initContent,
45-
writeFile,
46-
addSectionFile,
47-
]);
46+
}, [files, props.filename, props.initContent, writeFile, addSectionFile]);
4847

4948
return (
5049
<div className="embedded-editor">

declatations.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
declare module "ace-builds/src-min-noconflict/*";

0 commit comments

Comments
 (0)