上下文
我正在通过Yves ROCAMORA的“ENI学习”课程“* 学习使用PHP和Symfony开发Web应用程序(第二版)*"学习Symfony。
在“Webpack Encore”一节中,他解释了如何使用Sass和Vue.js来预处理CSS和JavaScript。
但是,我无法让Webpack-Encore与Bootstrap一起工作。
问题
- 我使用
symfony new --webapp
来创建应用程序的结构。 - 然后,
composer require symfony/webpack-encore-bundle
安装Webpack Encore。 - 我用
npm
安装了sass-loader
、node-sass
和bootstrap
。npm install
返回一个干净的安装。 - 我确实修改了webpack.js.js来启用Sass loader。
当我运行npm run watch
时,我遇到以下错误:
ERROR Failed to compile with 1 errors 9:54:06
Module build failed: Module not found:
"./assets/bootstrap.js" contains a reference to the file "@symfony/stimulus-bundle".
This file can not be found, please check it for typos or update it if the file got moved.
字符串
我在期待什么
npm run watch
应该正确构建应用程序。
我所尝试的
首先,我尝试使用composer安装缺少的包,但似乎stimulus-bundle是Webpack-Encore的一部分,并且它已经在我的项目中。
我注意到指南有一个不同的package.json
:我的缺少@hotwired/stimulus
和@symfony/stimulus-bridge
,所以我试图用composer安装它们,但是这些包不能用这种方式安装。我甚至试图手动添加它们(这是一个坏习惯,对吧?),然后运行npm install
,但是npm run watch
仍然失败,错误语句相同。
在清理了我的项目,然后一丝不苟地遵循指南的每一步之后,我仍然得到同样的错误。
编辑
遇到的问题是,我使用的是Symfony 7.0.1,而这种方法适用于Symfony 6。
1条答案
按热度按时间6vl6ewon1#
我也遇到了同样的问题,我想我现在知道为什么了。“--webapp”选项默认安装“Asset Mapper”。这将与Encore的食谱冲突。Symfony Flex不知道如何处理。所以你有两个选择:
1.删除与AssetMapper相关的所有内容
或
1.只需启动一个新项目,而不使用--webapp选项
我做了后者,到目前为止,在启动“npm run watch”时没有出现任何错误。此外,在添加“ux-turbo”时,它使用新的包正确更新了“package.json”。这在Asset Mapper中没有发生,无论它的同伴是什么,仍然存在。
请注意,在没有webapp选项的情况下启动项目,将安装项目的绝对 backbone 。您必须添加“template”,“MakerBundle”等组件。