配置iisnode部署Next.js应用后访问显示server.js代码问题求助
解决iisnode部署Next.js后显示server.js代码的问题
核心问题分析
页面直接返回server.js代码,说明IIS没有将请求转发给iisnode模块处理,而是把server.js当作静态文本文件返回了。以下是针对性的修复步骤:
1. 修正配置文件名
你的配置文件命名为web.configb,IIS仅识别web.config作为配置文件,立即将文件名改为web.config。
2. 修复web.config中的错误配置
修改后的web.config内容如下,主要修复了请求方法匹配的转义问题,并补充了静态文件的跳过规则:
<configuration> <system.webServer> <rewrite> <rules> <!-- 跳过Next.js静态资源,直接返回,避免重写到server.js --> <rule name="Skip Static Files" stopProcessing="true"> <match url="^/_next/|^static/|^favicon.ico$" /> <action type="None" /> </rule> <!-- 所有其他请求转发给server.js处理 --> <rule name="myapp"> <match url=".*" /> <action type="Rewrite" url="server.js" /> </rule> </rules> </rewrite> <iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" /> </system.webServer> <location path="" overrideMode="Deny"> <system.webServer> <handlers> <!-- 修正verb的转义符,将"\*"改为"*" --> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> </system.webServer> </location> </configuration>
3. 验证iisnode模块状态
- 打开IIS管理器,确认服务器级别已安装并启用iisnode模块
- 检查站点的模块列表,确保iisnode存在且启用
4. 确认Next.js应用的依赖与构建状态
- 确保已在项目根目录执行
npm install安装所有依赖 - 生产环境下需执行
npm run build生成静态资源,再部署到IIS
内容的提问来源于stack exchange,提问作者Rafael Drigo
相关产品推荐
相关产品推荐

