diff --git a/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue b/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue
index 9e5786750c8048b3fc0564605b95b5e0df39e151..a0dd11543b98b9c4664c88526fb1a5da5036dc2c 100644
--- a/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue
+++ b/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue
@@ -10,7 +10,7 @@
             @closeEdit="initCurrentData"
         >
             <template #content>
-                <pre v-show="currentContent !== ''" v-highlightjs="currentContent"><code ref="code" :class="[currentLang]"></code></pre>
+                <pre v-show="currentContent !== ''"><code v-html="highlightContent" class="hljs"></code></pre>
                 <div v-show="currentLang !== ''" class="code-lang">
                     <span>{{ currentLang }}</span>
                 </div>
@@ -63,28 +63,9 @@ export default {
         lang() {
             return this.block?.attributes?.payload?.lang;
         },
-    },
-    directives: {
-        highlightjs: {
-            deep: true,
-            bind(el, binding) {
-                let targets = el.querySelectorAll('code');
-                targets.forEach((target) => {
-                    if (binding.value) {
-                        target.innerHTML = binding.value;
-                    }
-                    hljs.highlightBlock(target);
-                });
-            },
-            componentUpdated(el, binding) {
-                let targets = el.querySelectorAll('code');
-                targets.forEach((target) => {
-                    if (binding.value) {
-                        target.innerHTML = binding.value;
-                        hljs.highlightBlock(target);
-                    }
-                });
-            },
+        highlightContent() {
+            let language = this.currentLang !== '' ? [this.currentLang] : null;
+            return hljs.highlightAuto(this.currentContent, language).value;
         },
     },
     mounted() {