Don’t know if you are still struggling with this. I had the same issue and realized that I was missing a couple required JS dependencies. Specifically, I needed to add:
wp_enqueue_script( 'tiny_mce_popup', includes_url( 'js/tinymce/tiny_mce_popup.js' ) );
and:
add_action( 'admin_footer', 'wp_tiny_mce_preload_dialogs', 30 );
Note: use the second line if you are trying to load the editor in wp-admin. Otherwise, you should change 'admin_footer'
to 'wp_footer'
. Also, I added the first line in the function in the admin_init action and that worked for me.