Объединение 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