импорт es6 index.js по имени каталога

#javascript #node.js #express #import #es6-modules

#язык JavaScript #node.js #экспресс #импортировать #es6-модули

Вопрос:

Я осмотрелся и, похоже, не могу найти четкого ответа на этот вопрос.

Можно ли импортировать index.js файл из клиентского каталога с использованием имени каталога (опущено /index.js )? Если да, то как? Это новый проект, и я действительно не хочу связывать свой код в данный момент.

Версия узла-v17.1.0.

Структура файла

 package.json server.js src/  index.js  utils/  index.js  

пакет.json

 {  "type": "module",  "main": "server.js",  "scripts": {  "start": "nodemon --ignore src"  },  "devDependencies": {  "express": "^4.17.1",  "nodemon": "^2.0.14"  } }  

server.js

 import express from 'express'  express()  .use(express.static('src'))  .get('/', (_, res) =gt; res.send(`  lt;script type="module" src="index.js"gt;lt;/scriptgt;`))  .listen(3000, () =gt; console.log(`Running at http://localhost:3000`))  

src/index.js

 import { stuff } from './utils'  // Firefox: Loading module from “http://localhost:3000/utils/”  // was blocked because of a disallowed MIME type (“text/html”).  

Я попытался запустить приложение с node --experimental-specifier-resolution=node server.js помощью и попытался добавить express.static.mime.define({'text/javascript': ['js']}) в server.js, но ни то, ни другое не работало на меня.

Комментарии:

1. Каждый js действует как модуль, и без импорта этот модуль не сможет его экспортировать. Одним из способов может быть создание нового файла, импорт всех содержащихся в нем файлов и экспорт оттуда. Однако это может создать циклическую зависимость.

2. На самом деле это то, что я использую /utils/index.js для: Для экспорта других файлов в каталог utils/.