Объединение expressjs с esbuild дает предупреждение об отсутствии view.js

Я пытаюсь связать сценарий "express.js" с esbuild, используя

esbuild index.js --bundle --platform=node --outfile=server.js

для запуска как лямбда-функции netlify/aws и, кажется, всегда получать это предупреждение:

> node_modules/express/lib/view.js: warning: This call to "require" will not be bundled because the argument is not a string literal
    81 │     var fn = require(mod).__express
       ╵              ~~~~~~~

Кажется, функция работает, но я хотел бы выяснить, в чем проблема, и я нигде не нашел подсказок в Интернете?

1 ответ

Процесс объединения пытается создать один файл, содержащий весь ваш код, но предупреждение сообщает вам, что express содержит некоторый код, который не может быть объединен в один файл. Я не знаком с экспрессом, но, очевидно, это также проблема с экспрессом и Webpack (см. Этот вопрос для примера).

Предполагая, что вы все еще сохраняете node_modules/expressпапку рядом с вашим пакетом, когда вы запускаете код, вы можете решить эту проблему с помощью esbuild так же, как работает решение Webpack: отметив expressпакет как внешний. Это выглядело бы так:

esbuild index.js --bundle --platform=node --outfile=server.js --external:express
Другие вопросы по тегам