【发布时间】:2020-10-27 15:02:44
【问题描述】:
我刚刚创建了一个新的 Next.js 项目(React v 17.0.1)。我正在尝试从遗留项目中编译和导入组件。看到一些错误让事情正常工作:
-
Module not found: Can't resolve 'react/jsx-dev-runtime'。我有一种预感,这可能与new JSX compiler in React 17 有关。-
可以通过将
/** @jsxRuntime classic */添加到文件顶部来解决,但我更愿意只打开经典编译器。这可能吗?
-
可以通过将
-
Global CSS cannot be imported from files other than your Custom <App>- 这可以通过使用模块或导入
pages/_app来解决。不过,我想关闭此安全功能,保留旧版组件。
- 这可以通过使用模块或导入
问题:
- 如何强制 Next.js 使用
classicJSX 编译器而不是新的automatic编译器 - 如何关闭强制 CSS 仅导入到
_app的安全“功能”?
【问题讨论】:
-
第一个错误不应该是 next.js >= 9.5.3 的问题(参见github.com/vercel/next.js/pull/16603 和github.com/vercel/next.js/releases/tag/v9.5.3)。全局 CSS 只能在
_app组件中导入,next.js 就是这样操作的。您可以按此处所述在单个组件中导入作用域 CSS:nextjs.org/docs/basic-features/… 我不知道这是否适用于您的情况。 -
哦,如果你想强制 next.js 使用经典的 JSX 转换,你必须按照这里的描述设置你的自定义 babel 配置:nextjs.org/docs/advanced-features/customizing-babel-config
标签: javascript reactjs next.js