Next.js执行npm run dev报错:找不到next/dist/compiled/ws模块
问题:WSL环境运行Next.js项目
npm run dev报错MODULE_NOT_FOUND 错误详情
[Error: Cannot find module 'next/dist/compiled/ws' Require stack: /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/dev/hot-reloader-webpack.js - /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js - /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/lib/router-server.js - /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/lib/start-server.js] { code: 'MODULE_NOT_FOUND', requireStack: [Array] }
项目配置
next.config.js内容:
const withPWA = require("@ducanh2912/next-pwa").default({ dest: "public", cacheOnFrontEndNav: true, aggressiveFrontEndNavCaching: true, reloadOnOnline: true, swcMinify: true, disable: process.env.NODE_ENV === "development", workboxOptions: { disableDevLogs: true, }, swSrc: "public/serviceWorker.js", }); /** @type {import('next').NextConfig} */ const nextConfig = { typescript: { tsconfigPath: "./tsconfig.json", }, images: { remotePatterns: [ { protocol: "https", hostname: "**.**.**", }, ], }, webpack(config) { config.resolve.alias = { ...config.resolve.alias, "@": require("path").resolve(__dirname), }; return config; }, }; module.exports = withPWA(nextConfig);
版本信息
- Node: v22.13.1
- Next.js: v15.1.6
已尝试的无效方案
- 在
next.config.js中添加实验性配置:experimental: { outputFileTracingRoot: join(__dirname, '../../'), } - 清除缓存:
rm -rf .next && npm cache clean --force - 删除
node_modules和package-lock.json后重新安装依赖:npm install
解决办法
1. 迁移项目到WSL原生文件系统
项目放在Windows的OneDrive目录下,WSL访问NTFS文件系统易出现权限、符号链接失效等问题。直接把项目复制到WSL本地目录:
# 复制项目到WSL本地目录 cp -r /mnt/c/Users/Marcus\ Flavio/OneDrive\ -\ Microsoft\ 365/Área\ de\ Trabalho/Projects/smartiming-pwa ~/Projects/ # 进入新目录 cd ~/Projects/smartiming-pwa # 删除旧依赖并重新安装 rm -rf node_modules package-lock.json npm install # 启动项目 npm run dev
2. 降级Node.js版本
Next.js 15与Node.js 22可能存在兼容性问题,切换到LTS版本Node.js 20:
# 用nvm安装并切换到Node.js 20(未安装nvm需先安装) nvm install 20 nvm use 20 # 重新安装依赖并启动 rm -rf node_modules package-lock.json npm install npm run dev
3. 手动安装缺失的ws包
因文件系统问题可能导致Next.js内置的ws包丢失,手动补装:
npm install ws --save-dev
4. 临时禁用PWA插件排查冲突
先关闭@ducanh2912/next-pwa插件,确认是否是插件导致的问题:
修改next.config.js为直接导出配置:
/** @type {import('next').NextConfig} */ const nextConfig = { typescript: { tsconfigPath: "./tsconfig.json", }, images: { remotePatterns: [ { protocol: "https", hostname: "**.**.**", }, ], }, webpack(config) { config.resolve.alias = { ...config.resolve.alias, "@": require("path").resolve(__dirname), }; return config; }, }; module.exports = nextConfig;
然后执行npm run dev,若能正常启动,再排查PWA插件版本是否适配Next.js 15。
内容的提问来源于stack exchange,提问作者Marcus-Flavio
相关产品推荐
相关产品推荐

