@RichardTrump

Как пофиксить неработающий import в клиентском js файле в html, работающий на сервере node.js w/o express?

Всем привет! Такая штука, есть сервак дефолтный на node js w/o express:
const express = require('express')

const app = express()

app.get('/', function(req, res) {
    res.sendFile(__dirname + 'index.html')
})

app.listen(8080, () => console.log('Server started!'))


Если юзер на дефолтном роуте /, подкидываю ему index.html с простой структурой Html (ибо я для теста всё делал и никаких вёрсткок там у меня нету). Единственное, что у меня есть в index.html - это скрипт, подключаемый такой строчкой:

<script src="./script.js"></script>

Ничё необычного вообщем. Проблема следующая: у меня есть еще доп. файл в ./libs/main.js, это файл также тестовый, но из него я экспортирую функцию с консоль логом приветствия,а в script.js я импортирую эту функцию из файла main.js и вызываю её соответственно. Но у меня по итогу v8 ругается с такой ошибкой: Uncaught SyntaxError: Cannot use import statement outside a module. До этого была проблема вообще с распознаванием Import, я её решил с помощью babel-cli, babel-preset-env, это типа идёт транспирация в es6, ибо node js не поддерживает такой синтаксис. В чем тоже была проблема. Пробовал много вариантов, и через require, и через type="module", и через еще много чего. Сейчас думал даже юзать вебпак, но всё же хочется решить эту проблему.

Спасибо за уделенное время!
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
kocherman
@kocherman
function require(url,cb){
  let script = document.createElement('script');
  script.setAttribute('type','application/javascript');
  script.setAttribute('src',url);
  if('function' == typeof cb) 
    script.addEventListener('load', cb, false);
  document.head.appendChild(script);
  return script;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы