We are doing Migration from DTM to Launch for one of portal and interestingly we are getting dataLayer is undefined error with Launch scripts and same is working with DTM scripts (entire set up was same and no change from DTM to Launch code, all library code && data elements && direct call rules are same).
Can any one please explain us is there any thing that we are missing and why exactly issue coming in Launch not in DTM for the same code snippets.
Do you deploy Launch asynchronously or synchronously? It sounds like you are running into a race condition where the Launch rule executes before the data layer is ready.
Ideally, your data layer code is populated in the <head>, above the Launch script. If that's not feasible and your data layer code is written in the <body> below your Launch script, you need to fire your page view rule at least "DOM Ready".