easz
1
Usually people use the following code to require other libs with css (e.g. leaflet).
L = require("leaflet@1.7.1")
html`<link href='${resolve(
'leaflet@1.7.1/dist/leaflet.css'
)}' rel='stylesheet' />`
and if I tried to use require.resolve
instead resolve
for the css link and it is apparently not loaded properly (i.e. wrong map drawing)
html`<link href='${require.resolve(
'leaflet@1.7.1/dist/leaflet.css'
)}' rel='stylesheet' />`
why?
why is different between require.resolve('leaflet@1.7.1/dist/leaflet.css')
and resolve('leaflet@1.7.1/dist/leaflet.css')
? both returns plain string?
btw.
resolve('leaflet@1.7.1/dist/leaflet.css')
return “https://unpkg.com/leaflet@1.7.1/dist/leaflet.css” and require.resolve('leaflet@1.7.1/dist/leaflet.css')
returns “https://cdn.jsdelivr.net/npm/leaflet@1.7.1/dist/leaflet.css” which are same files any way.
radames
2
hi @easz , I’m not sure about the reason for the synchronous resolve()
function as it only points the package to https://unpkg.com
where require.resolve()
is as much more sophisticated packaged resolution asynchronous function
To make your code work you have to use await
to wait the promise resolve the package url
html`<link href='${await require.resolve(
'leaflet@1.7.1/dist/leaflet.css'
)}' rel='stylesheet' />`
2 Likes
resolve
is deprecated. Please use require.resolve
.
3 Likes
easz
4
thanks you all!
I was not aware of that require.resolve is async…
mootari
5
Afaik resolve()
is also used internally by Observable to rewrite dynamic imports.