#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/.