The refugee problem is a global problem. Developed and developing countries are spending billions on this issue. They are all just throwing the money away. There is something which helps to reduce the global refugee problem. But it is a solution politicians won’t love. It is free trade.
The reason that foreign aid is being used as the method is that it allows countries to improve governance (read increase the size of the government) and improve the quality of living and living standards in poorer countries.
The idea of foreign aid is a good one. At least if you enjoy high taxes and bureaucratic operations to ensure the money is spent. If you think about this for a moment: the foreign aid never reduced the flee of refugees. The end of a destructive war did. An end of poverty did.
To end the refugee flow from Latin America to the United States there is only an easy thing the United States should do. Allow free and unlimited entry of goods and services to the USA economy.
In Europe, they could do this with all African and Middle East countries. It would not require new tax money being collected. It will not require the hiring of thousands of civil servants. It just requires taking down the trade barriers that are keeping the people poor.
If you think about what success of free trade to end poverty. It lifted 700 million people out of absolute poverty into the middle class. So shall we give it a try?