导入类型语法不明确
文档here显示import { <font-name> } from 'next/google/font';
它编译,但在运行时抛出错误“模块未找到”。
但this讨论显示:import { <font-name> } from '@next/google/font';
此版本在编译时抛出此错误。
至少知道“@”是否是必需的会有帮助。我希望文档是最新的,讨论不是。抛出的错误都无助于消除这两种语法的歧义!
这是一个nx mono-repo
顺便说一句,这是在nrwl nx mono-repo中的NextJs项目中。
我尝试更新package.json以包括:
"@types/next": "13.1.1",
但这并没有帮助。
请注意,package.json
位于monorepo的根目录(但所有其他的dep和devDeps都在那里,所以它必须是正确的位置,因为子项目没有自己的package.json文件)。
类型声明文件
在应用程序(即子文件夹)中有一个index.d.ts
文件,我尝试在其中添加:declare module 'next/font/google'
和declare module '@next/font/google'
两者都没有解决问题。
Stackoverlfow类似问题
有this on stackoverflow,但这也没有帮助。
Yarn锁文件
在yarn.lock
文件中有以下条目,它似乎将next打包在@nrwl名称空间中,因此我尝试了'@nrwl/next/google/font',但也不起作用
"@nrwl/next@15.8.8":
version "15.8.8"
resolved "https://registry.npmjs.org/@nrwl/next/-/next-15.8.8.tgz"
integrity sha512-h7sYBf8ljyfXyoSCgiHxukB/AyZsHNL8g+vSVmr7iCkVd6IgFIa1n3myM7vaALAVrJ0EccXYdK7yuKHbVvfLnA==
dependencies:
"@babel/plugin-proposal-decorators" "^7.14.5"
"@nrwl/devkit" "15.8.8"
"@nrwl/js" "15.8.8"
"@nrwl/linter" "15.8.8"
"@nrwl/react" "15.8.8"
"@nrwl/workspace" "15.8.8"
"@svgr/webpack" "^6.1.2"
chalk "^4.1.0"
copy-webpack-plugin "^10.2.4"
dotenv "~10.0.0"
express "^4.18.1"
fs-extra "^11.1.0"
http-proxy-middleware "^2.0.6"
ignore "^5.0.4"
semver "7.3.4"
ts-node "10.9.1"
tsconfig-paths "^4.1.2"
tsconfig-paths-webpack-plugin "4.0.0"
url-loader "^4.1.1"
webpack-merge "^5.8.0"
1条答案
按热度按时间uemypmqf1#
好吧,NextJs文档根本不清楚这一点。
原来next/font是一个单独的包。
所以解决方案看起来像这样,非常简单:
包.json
_app.tsx