diff --git a/core/modules/views/src/Entity/View.php b/core/modules/views/src/Entity/View.php
index 3a21a1379b4d5cdae2207f8af54134661fb31e65..34b4ab093d3b80272b176cc97afeebdfc5e1e326 100644
--- a/core/modules/views/src/Entity/View.php
+++ b/core/modules/views/src/Entity/View.php
@@ -432,7 +432,11 @@ public function mergeDefaultDisplaysOptions() {
    * {@inheritdoc}
    */
   public function isInstallable() {
-    return (bool) \Drupal::service('views.views_data')->get($this->base_table);
+    $table_definition = \Drupal::service('views.views_data')->get($this->base_table);
+    // Check whether the base table definition exists and contains a base table
+    // definition. For example, taxonomy_views_data_alter() defines
+    // node_field_data even if it doesn't exist as a base table.
+    return $table_definition && isset($table_definition['table']['base']);
   }
 
   /**