Я считаю, что проблема здесь в том, что вы пытаетесь загрузить модуль, но есть модули ES6 и модули UMD. D3. js - это модуль UMD.
Модули UMD «загружаются» для подключения к «оконному» или «глобальному» объекту. Модули UMD, развивающиеся в то время, когда именно то, как будут работать «Модули», постоянно менялись, в любом случае это очень увлекательная тема c, и я бы порекомендовал ее когда-нибудь почитать ...
Итак, вместо
import * as d3 from "/static/d3.js"
вы должны сделать
import "/static/d3.js"
Теперь вы сможете использовать D3, так как он был прикреплен к объекту «окно».
Так и с при этом ваша установка будет выглядеть так:
// index.html
<html>
<body>
<script type="module">
import {graph} from "/static/graph.js"
graph()
</script>
</body>
</html>
и
// static/graph.js
import "/static/d3.js" // Now loaded as UMD module
export function graph() {
d3.select("#classname");
console.log("Selected");
}
Это будет работать.
В качестве примечания, это часть Модуль D3, который выполняет начальную загрузку и присоединяет D3 к объекту «окно».
...
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.d3 = global.d3 || {})); // <-- the "magic" part.
}(this, function (exports) {
/*
THE REST OF THE MODULE SOURCE GOES HERE
all 18,561 lines of it...
*/
}));