使用webpack-encore
,可以将脚本文件无错误地添加到格式正确的JavaScript块中的{{ encore_entry_script_tags('add-food') }}
模板中。不清楚的是如何使用AssetMapper实现相同的效果。我曾经在浏览器的控制台中得到过类似的东西:$ is not defined at add-food-81afe070e8be2f50bb5e13fa8d7573cf.js:1:1
。
我尝试了各种各样的选择都没有成功。我错过了什么?
当前环境:../assets/vendor/installed.php
:
// ...
'jquery' =>
array (
'version' => '3.7.1',
'dependencies' =>
//...
字符串../assets/app.js
:
import './bootstrap.js';
import './styles/app.css'
import './styles/jquery-ui.min.css'
import 'bootstrap/dist/css/bootstrap.min.css';
import './add-food.js';
import jquery from 'jquery';
const $ = jquery;
window.$ = $;
型base.html.twig
包括:
{# ... #}
{% block javascripts %}
{% block importmap %}{{ importmap('app') }}{% endblock %}
{% endblock %}
{# ... #}
型
1条答案
按热度按时间xmakbtuz1#
你在这里的问题,在问题中显示的错误,不一定是关于创建一个全局变量。
错误来自
add-food.js
,它是在app.js
中创建全局$
变量之前导入的。您可以尝试在创建全局变量后导入
add-food.js
,但在这种情况下,您应该做的不是创建全局变量,而是在每个需要它的脚本上导入import $ from 'jquery'
。这个文件仍然只被请求一次,而且你不会创建一个不必要的全局变量。(无论如何,在你的例子中,应该创建全局变量,尽管我可能会像文档中那样做