2014-11-24 4 views
4

Я некоторое время боролся с проблемой, которая, как мне кажется, вызвана Webpack.Webpack вызывает синтаксическую ошибку в выходе пакета

По сути, у меня есть приложение на основе узла, которое я собираю с помощью Webpack для обслуживания клиента (это приложение на основе ReactJS). Проблема возникла, когда я установил пакет NPM Tabletop и require d it.

При попытке загрузить Webpack созданный bundle.js в браузере, я получаю ошибку синтаксиса:

Uncaught SyntaxError: Unexpected identifier

, который жалуется на этой линии в bundle.js:

target[capName] = __webpack_require__(387)(""path + '/' + name);

После некоторого рытья я обнаружил, что эта строка берется из строки в библиотеке Hoek (которая является субзависимостью T abletop):

target[capName] = require(path + '/' + name);

Очевидно, что Webpack сделал что-то в стиле фанк здесь.

Однако я не смог изолировать причину. Tabletop включает в себя an example использования NodeJS, с которым я был в состоянии Webpack и работает нормально.

Я также клонировал Hoek и Webpacke'd, не видя никаких незаконных преобразований, подобных приведенным выше.

Итак, я не уверен, что это проблема с Webpack, Hoek или Tabletop, поэтому я размещаю ее здесь.

Я не нахожу никаких связанных вопросов, здесь или по GH.

Вся помощь оценивается!

+0

Это динамичная проблема. Постепенный веб-пакет по умолчанию не поддерживает динамические требования (например: require (not + 'a + + fixed +);) Однако можно использовать плагин, чтобы научить его обращаться с ними. См. Https://github.com/webpack/webpack/issues/118 и https://github.com/webpack/webpack/search?q=dynamic+require&type=Issues&utf8=%E2%9C%93 – generalhenry

+0

Поскольку код создается webpack, это явно ошибка, и ее следует сообщать в Github. Также отправьте свой конфиг, потому что я предполагаю, что он вызван определенной опцией. –

+0

Спасибо за информацию. Я согласен, что это ошибка @jhnns, но, как показано в ссылках, предоставленных @generalhenry, я явно не первый, кто испытал это. Я понял, что Tabletop имеет устаревшую зависимость 'request' - я использую Tabletop для обновления и вижу, как это работает. Будет опубликован после завершения. –

ответ

0

Вызывает устаревшую вложенную зависимость пакета hoek, вызвавшую это из-за динамической строки требуемой строки, показанной выше. Это было удалено в [email protected]

К сожалению, у Tabletop's request dep есть устаревшая зависимость hawk, которая снова зависит от hoek. Я раздвоенный request и наткнулся на версию, но теперь я получаю другую ошибку при загрузке в браузере:

Uncaught Error: Cannot find module "net"

net является основным модулем Node, так что я подозреваю, что что-то происходит здесь, так как мы» re Webpacking serverside JS для запуска его в браузере. Тем не менее, это другая проблема, поэтому я считаю, что здесь был задан исходный вопрос.

Но я все еще не могу использовать Tabletop. Возможно, мне придется его обозревать и напрямую использовать этот пакет.

0

Я использовал superagent с некоторым успехом при добавлении

plugins.push(new webpack.DefinePlugin({ "global.GENTLY": false })); и node: {__dirname: true}

в конфигурации исправления WebPack в superagent для использования с WebPack.

При использовании request библиотеки, добавив следующие конфигурации WebPack в:

node: { 
    "net": "empty" 
} 

багов Uncaught Error: Cannot find module "net".

Однако, я теперь имею проблемы с библиотекой мим, которая является зависимость request: Error: ENOENT, no such file or directory '/types/mime.types'

Аксель, у вас были какие-либо успеха фиксации request с WebPack?

+0

Я коснулся 'mime.types' и' node.types' в '/ types /', но это вряд ли кажется правильным. – Nodu

+0

Спасибо за информацию. Нет, я еще не пробовал. Я закончил использование Tabletop в моем Gulpfile вместо моего клиентского приложения, что позволило избежать проблем, связанных с webpack. –

Смежные вопросы