在Azure部署React应用时遭遇ENOENT文件不存在错误求助
解决Azure上React应用的ENOENT报错(找不到policy文件)
页面能正常加载说明核心应用逻辑没问题,这个报错是因为某个请求尝试访问/home/site/wwwroot/policy文件但找不到,下面是具体排查和解决步骤:
确认文件是否存在
登录Azure门户进入你的App Service,打开「高级工具」>「Kudu」,在「Debug console」里进入/home/site/wwwroot目录,查看是否有名为policy(无扩展名)的文件:- 若本地React项目的
public目录里也没有这个文件:说明是代码或配置误引用了不存在的文件,下一步找请求来源。 - 若本地有这个文件:检查部署流程(比如GitHub Actions、Azure DevOps Pipeline)是否遗漏了它。React构建后会把
public目录文件复制到build文件夹,确认部署脚本是否将build文件夹的所有内容都上传到Azure。
- 若本地React项目的
定位请求来源
查看App Service详细日志,判断/policy请求是浏览器端还是服务器端发起的:- 浏览器端:打开浏览器开发者工具「网络」面板,过滤请求找
/policy;全局搜索项目代码里的/policy字符串,检查public/index.html的meta标签、service worker代码、第三方依赖是否有相关引用。 - 服务器端:排查Azure App Service的安全配置(比如强制CSP策略是否引用了本地policy文件),或者自定义的web.config/nginx配置里是否有错误路由规则指向
policy文件。
- 浏览器端:打开浏览器开发者工具「网络」面板,过滤请求找
针对性解决
- 若文件是多余的:找到引用它的地方删除即可,比如代码里的
fetch('/policy')、index.html里的相关meta配置。 - 若文件是必需的:将其放到React项目的
public目录下,重新构建并部署;如果部署后仍不存在,检查.gitignore是否误加了policy,或CI/CD流程是否忽略了无扩展名文件。 - 临时规避:暂时找不到请求来源的话,用Kudu在
wwwroot目录手动创建空的policy文件,可直接消除报错,再慢慢排查根源。
- 若文件是多余的:找到引用它的地方删除即可,比如代码里的
内容的提问来源于stack exchange,提问作者sachin
相关产品推荐
相关产品推荐

