Использование express-babelify-middleware с FeathersJS

Я пытаюсь использовать express-babelify-middleware
с FeathersJS и ошибка отображается в консоли браузера:

ReferenceError: main_run не определен

Я считаю, что это означает, что babelify не работает или я использую его неправильно, так как main_run находится в глобальном пространстве имен src в моем html-файле.
Вот моя настройка с использованием структуры из создания перьев:

общедоступный / index.html:

<!DOCTYPE html>
<html>
<head>
<title>babelify test</title>

<script src="main.js"></script>
<script>
main_run()
</script>
</head><body>
<p>Testing feathers with babelify</p>
</body></html>

общедоступный / main.js

const external_module = require('./test')

function main_run(){
external_module()
}

общедоступный / test.js

module.exports = function(){
console.log("Hello world for an external module")
}

среди использования src / app.js:

...

const babelify = require('express-babelify-middleware')

...

app.use(compress())
  .options('*', cors())
  .use(cors())
//the line that is not working:
.use('/main.js', babelify( path.join(app.get('public'), 'main.js') ))

  .use(favicon( path.join(app.get('public'), 'favicon.ico') ))
  .use('/', serveStatic( app.get('public') ))

Когда я захожу в localhost: 3030 / main.js, я вижу файл, но функции выглядят как отдельные функции, поэтому я не знаю, как попасть в эту функцию.


person Brandon Keith Biggs    schedule 19.12.2016    source источник


Ответы (1)


Глупая проблема, нельзя получить доступ к просматриваемому коду в html-файле, который его вызывает. Таким образом, public / index.html не может получить доступ к main_run, если он не прикреплен к объекту окна. Есть аналогичный вопрос
здесь.
В остальном мой код работает отлично.
В main.js разместите следующий код внизу:

window.main_run = main_run

Затем в index.html замените строку main_run () на:

window.main_run()

Это запишет содержимое test.js в консоль.

person Brandon Keith Biggs    schedule 19.12.2016