#reactjs #typescript #next.js
Вопрос:
У меня есть такая структура папок
[постИд].ts
import { useRouter } from 'next/router'
const Post = () => {
const router = useRouter()
const { pid } = router.query
return <p>Post: {pid}</p>
}
export default Post
и я получаю эту ошибку, и я не знаю, как ее исправить, может кто-нибудь сказать мне, как ее решить?
upd:
Может быть, проблема в моем tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve"
},
"exclude": [
"node_modules"
],
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
]
}
Комментарии:
1. что произойдет, если вы
{pid}
временно удалитесь? Кстати, вы должны использоватьconst { postId } = router.query
2. @SomeoneSpecial ничего особенного, я могу оставить только текст, и он все равно не работает
3. Вы следовали инструкциям NextJS по настройке машинописи? Коды, которые вы показали, по крайней мере, не ошибочны (за исключением того, что я упомянул выше).
4. @SomeoneSpecial да, я следил за документами nextjs
5. @SomeoneSpecial это, вероятно, должно быть что-то с машинописным текстом
Ответ №1:
У вас есть имя файла [postId]
, поэтому должно быть ваше имя параметра:
const { postId } = router.query
Комментарии:
1. codesandbox.io/s/zealous-browser-hvhn4?file=/pages/posts/…
Ответ №2:
Ваше имя файла должно быть типа jsx / tsx, поэтому
вместо
[postId].ts
Должно быть
[postId].tsx
Ответ №3:
Я только что перешел с webstorm на vscode, и все работает нормально, возможно, это была проблема в моем файле tsconfig