首先,另一个问题,#71649994,提出了几乎相同的问题,只是他们只说他们的一个项目会发生这种情况,而我的情况是,我创建的每个项目都会发生这种情况,而在那个问题中,没有解决方案,所以我想我应该再问一次,并添加更多的细节.

在我的例子中,快速重新加载,甚至只是热重新加载/重新构建页面并在我更新代码时刷新,根本不起作用.当我更改我的代码时,没有任何react .当我使用npx create-next-app@latest创建一个基本的Next应用程序,然后使用npm run dev运行开发服务器时,更新像pages/index.js这样的文件不会做任何事情,包括更改页面标题标签等基本更改.在终端中,服务器没有响应我保存文件的输出.

我在两台不同的电脑上体验过这一点,都是使用TypeScrip和普通的JavaScript.一台电脑运行Windows 10,另一台运行Windows 11,但我的开发环境都是WSL2 Ubuntu,我使用的是VScode.

我在一些项目上的经验与我的略有不同.在TypeScrip项目中,修改我全局导入的css文件(而不是css模块)看起来确实适用于快速刷新,包括终端输出以及页面上指示快速刷新发生的加载图标.然而,当按照上面的过程创建默认的JS项目时,快速刷新似乎都不起作用.任何更改似乎都不会触发刷新或响应,刷新页面不会执行任何操作.

需要说明的是,当我运行npm run devnpx next devyarn dev时,初始构建运行得很好.我对类型脚本编译器或sass编译器也没有问题,这意味着当我在目录中运行tsc *.ts --watch时,当我修改那些文件时,它总是毫不费力地将类型脚本代码编译成JS,当我处理.scss个文件时,情况也是如此.

我也可以用npm run start启动一台生产服务器,同样不会出现故障.

我正在运行的一些软件的版本:

  • 下一个12.2.4
  • VS代码1.70.0
  • Ubuntu 20.04.3 LTS

package.json

{
  "name": "js_web",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "next": "12.2.4",
    "npm": "^8.16.0",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "eslint": "8.21.0",
    "eslint-config-next": "12.2.4"
  }
}

next.config.js

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  swcMinify: true,
}

module.exports = nextConfig

很难说它是否相关,但在try 全局安装NPM包时,我也遇到过eAccess/权限错误,这需要我使用sudo才能让它们真正安装.由于我在两台计算机上都遇到了这个问题和NextJS问题,这会不会表明我在两台计算机上的配置方式存在问题,从而导致了NextJS问题?

任何有类似设置的人都不会遇到这个问题吗?是否有其他详细信息可供我调查以try 确定问题?

最后,是否可以启用额外的调试输出(如果可能会有帮助)?

推荐答案

根据我的经验,当你的源代码位于Windows驱动器(例如/mnt/c)上时,就会出现这种情况,因为WSL用于这些驱动器的驱动程序还不支持intify.有关相关问题的更多详细信息,请参见this answer.

至少有两种可能的解决方案:

  • 如果需要WSL2,推荐的解决方案是将文件放在WSL的ext4根文件系统上.例如,在/home/以下的某个地方.这还有一个额外的优势,那就是比Windows驱动器快much.

  • 或者,您可以将您的实例转换为WSL1,它does支持Windows驱动器上的intify,并且在那里处理文件时速度要快得多.如果需要,您还可以保留一份WSL1和一份WSL2副本.它们都服务于不同的目的,但对于大多数Web框架开发,我认为您会发现WSL1更适合.

    您可以备份您现有的版本wsl --export <distroname> <filename.tar>,然后更改到版本wsl --set-version <distroname> 1的WSL1.或者,您可以将备份重新导入为wsl --import <newDistroName> <directory> <filename.tar> --version 1.

  • 框架使用的一些Node dev服务器可以设置为轮询文件更改,而不是由intify通知.虽然我没有直接使用Next.js的经验,但请查看文档,看看是否有方法启用轮询.

Javascript相关问答推荐

在分区内迭代分区

zoom svg以适应圆

使用续集和下拉栏显示模型属性

在页面上滚动 timeshift 动垂直滚动条

yarn安装一个本地npm包,以便本地包使用main项目的node_modules(ckeditor-duplicated-modules错误)

Javascript,部分重排序数组

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

Angular material 拖放堆叠的牌副,悬停时自动展开&

如何在Obsidian dataview中创建进度条

html + java script!需要帮助来了解为什么我得到(无效的用户名或密码)

类构造函数不能在没有用With Router包装的情况下调用

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

查询参数未在我的Next.js应用路由接口中定义

如果没有页面重新加载Angular ,innerHTML属性绑定不会更新

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

是否设置以JavaScript为背景的画布元素?

如何正确地在ComponentWillUnmount中卸载状态以避免内存泄漏?

JQuery使用选项填充HTMLSELECT并设置默认结果,默认结果显示为空

更新文本区域行号

正在发出错误的URL请求