Я работаю над проектом, в котором используется узел, в котором множество модулей, в свою очередь, зависят от модулей, использующих код ECMAScript 6. Например, некоторые модули используют let
, некоторые используют =>
для определений функций и т. Д. c.
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь построить проект, я получаю ошибки именно в этих местах.
Я использую команду построения:
cross-env NODE_ENV=production webpack --progress --hide-modules
И некоторые из генерируемых ошибок следующие:
ERROR in build.js from UglifyJs
Unexpected token: name (index) [./node_modules/debug/src/browser.js:155,0][build.js:1961,5]
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! qr-client@1.0.0 build-production: `cross-env NODE_ENV=production webpack --progress --hide-modules`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the qr-client@1.0.0 build-production script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Но эта ошибка Unexpected token: name (index)
может быть чем угодно. В данном случае это потому, что скрипт содержит строку let index = 0
, который, кажется, не понимает узел (если я вручную отредактирую скрипт browser.js
, чтобы он использовал var
везде, где он использовал let
, он неожиданно работает , но выдает разные ошибки.
Чтобы попытаться это исправить, я попытался запустить npm install es6
, который, кажется, устанавливается отлично. Хотя ошибки все еще сохраняются. Мой npm version
дает:
{
'qr-client': '1.0.0',
npm: '6.13.4',
ares: '1.15.0',
brotli: '1.0.7',
cldr: '35.1',
http_parser: '2.8.0',
icu: '64.2',
llhttp: '2.0.1',
modules: '72',
napi: '5',
nghttp2: '1.40.0',
node: '12.14.1',
openssl: '1.1.1d',
tz: '2019c',
unicode: '12.1',
uv: '1.33.1',
v8: '7.7.299.13-node.16',
zlib: '1.2.11'
}
Итак, как вы видите, мой npm и узел обновлены, так что это не должно быть проблемой. Кто-нибудь знает, почему возникает эта проблема?
Прежде чем кто-либо спросит: да, я попробовал исправления, перечисленные в npm ERR! код ELIFECYCLE , но они не работали вообще. То же самое просто произошло сразу после попытки.