@@ -4,6 +4,7 @@ import { useScript as _useScript } from '@unhead/vue/scripts'
4
4
import { reactive } from 'vue'
5
5
import type { NuxtDevToolsScriptInstance , NuxtUseScriptOptions , UseFunctionType , UseScriptContext } from '../types'
6
6
import { onNuxtReady , useNuxtApp , useRuntimeConfig , injectHead } from '#imports'
7
+ import { logger } from '../logger'
7
8
8
9
function useNuxtScriptRuntimeConfig ( ) {
9
10
return useRuntimeConfig ( ) . public [ 'nuxt-scripts' ] as {
@@ -36,7 +37,19 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol
36
37
nuxtApp . $scripts = nuxtApp . $scripts ! || reactive ( { } )
37
38
const exists = ! ! ( nuxtApp . $scripts as Record < string , any > ) ?. [ id ]
38
39
39
- if ( options . trigger === 'onNuxtReady' || options . trigger === 'client' ) {
40
+ const err = options . _validate ?.( )
41
+ if ( import . meta. dev && import . meta. client && err ) {
42
+ // never resolves
43
+ options . trigger = new Promise ( ( ) => { } )
44
+ if ( ! exists ) {
45
+ let out = `Skipping script \`${ id } \` due to invalid options:\n`
46
+ for ( const e of err . issues ) {
47
+ out += ( ` ${ e . message } \n` )
48
+ }
49
+ logger . info ( out )
50
+ }
51
+ }
52
+ else if ( options . trigger === 'onNuxtReady' || options . trigger === 'client' ) {
40
53
if ( ! options . warmupStrategy ) {
41
54
options . warmupStrategy = 'preload'
42
55
}
@@ -51,6 +64,12 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol
51
64
nuxtApp . $scripts [ id ] = undefined
52
65
return _remove ( )
53
66
}
67
+ instance . load = async ( ) => {
68
+ if ( err ) {
69
+ return Promise . reject ( err )
70
+ }
71
+ return instance . load ( )
72
+ }
54
73
nuxtApp . $scripts [ id ] = instance
55
74
// used for devtools integration
56
75
if ( import . meta. dev && import . meta. client ) {
@@ -97,7 +116,6 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol
97
116
syncScripts ( )
98
117
} )
99
118
payload . $script = instance
100
- const err = options . _validate ?.( )
101
119
if ( err ) {
102
120
payload . events . push ( {
103
121
type : 'status' ,
0 commit comments