Pri*_*ata 5 mongodb npm node-mongodb-native next.js
我的项目(NextJS)运行良好,突然我遇到了 ModuleNotFoundError 问题。特别是在 nextJs 的动态路由的情况下。
我的页面结构不工作 pages/programs/[programtype]/[program].jsx
"mongodb": "^3.5.9"
ModuleNotFoundError: Module not found: Error: Can't resolve 'dns' in 'node_modules/mongodb/lib'
ModuleNotFoundError: Module not found: Error: Can't resolve 'dns' in '/project-path/node_modules/mongodb/lib'
at /project-path/node_modules/webpack/lib/Compilation.js:925:10
at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:401:22
at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:130:21
at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:224:22
at /project-path/node_modules/neo-async/async.js:2830:7
at /project-path/node_modules/neo-async/async.js:6877:13
at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:214:25
at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:213:14
at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/project-path/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /project-path/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/project-path/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/project-path/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
at /project-path/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
Run Code Online (Sandbox Code Playgroud)
lif*_*foo 14
这是 nextjs 中服务器端代码的一个真正微妙的问题。
错误很明显:您试图在客户端代码中执行服务器端代码(mongo 查询)。不明显的是原因,因为我确定你没有错误的代码......
经过一些调试后,我发现如果您导入 mongo 代码但不使用它,则会引发此错误。请参阅下文以了解如何避免它。
所以,这很好用:
import { findUsers } from '../lib/queries'
function Home({ users }) {
return (
<h1>Users list</h1>
//users.map and so on...
)
}
export async function getServerSideProps() {
const users = await findUsers()
return {
props: {
users: users
}
}
}
export default Home
Run Code Online (Sandbox Code Playgroud)
虽然这会抛出错误:
import { findUsers } from '../lib/queries'
function Home({ users }) {
return (
<h1>Users list</h1>
//users.map and so on...
)
}
export async function getServerSideProps() {
// call disabled to show the error
// const users = await findUsers()
return {
props: {
users: [] //returned an empty array to avoid other errors
}
}
}
export default Home
Run Code Online (Sandbox Code Playgroud)
为了避免这种错误,只是删除任何服务器端代码导入你的组件,如果你不使用它getServerSideProps。
| 归档时间: |
|
| 查看次数: |
4419 次 |
| 最近记录: |