为何找不到entrypoints.json?Symfony+Webpack-Encore路径配置异常
解决Webpack Encore在Symfony中从public_html加载entrypoints.json的问题
你遇到的核心问题是:只配置了framework.assets.json_manifest_path,但Webpack Encore Bundle的entrypoints文件路径需要单独配置,默认它会指向public/build/entrypoints.json,所以即使你改了服务器文档根,它还是会去默认路径查找。
解决方案:配置Webpack Encore Bundle的entrypoints路径
在config/packages/webpack_encore.yaml文件中(如果没有就新建),添加以下配置:
webpack_encore: # 指定编译后资源的输出目录,Bundle会自动从这里读取entrypoints.json output_path: '%kernel.project_dir%/public_html/build' # 或者也可以直接指定entrypoints.json的完整路径(二选一即可) # entrypoints_json_path: '%kernel.project_dir%/public_html/build/entrypoints.json'
为什么之前的配置没用?
framework.assets.json_manifest_path是给Symfony原生的asset()函数用的,用来映射静态资源的哈希文件名;- 而Twig里的
encore_entry_script_tags()、encore_entry_link_tags()这些函数是由@symfony/webpack-encore-bundle提供的,它的配置和原生assets系统是分开的,默认会读取public/build/entrypoints.json,所以必须单独指定路径。
验证配置是否生效
- 重启Symfony服务器(确保配置被加载):
symfony server:stop symfony server:start --document-root=public_html
- 重新运行Webpack构建(确保entrypoints.json是最新的):
npm run build
这样Twig就能正确找到public_html/build/entrypoints.json文件了。
内容的提问来源于stack exchange,提问作者Dallas-Blue-Ant
相关产品推荐
相关产品推荐

