Компиляция приложения с помощью Closure Compiler
Я пытаюсь создать собственное приложение openlayers-3 в Windows 7 с помощью учебника по компиляции приложений с помощью Closure Compiler. При запуске опции сборки closure-util я получаю следующее:
C:\Roy\websites\php_js_projects\closure-compiler>node_modules\openlayers\node_mo
dules\.bin\closure-util build config.json app.js
info closure-util Reading build config
info closure-util Getting Closure dependencies
info closure-util Compiling 367 sources
child_process.js:1162
throw errnoException(err, 'spawn');
^
Error: spawn ENAMETOOLONG
at exports._errnoException (util.js:746:11)
at ChildProcess.spawn (child_process.js:1162:11)
at Object.exports.spawn (child_process.js:995:9)
at Object.module.exports [as compile] (C:\Roy\websites\php_js_projects\closu
re-compiler\node_modules\openlayers\node_modules\closure-util\lib\compile.js:42:
18)
at compile (C:\Roy\websites\php_js_projects\closure-compiler\node_modules\op
enlayers\node_modules\closure-util\lib\build.js:94:11)
at fn (C:\Roy\websites\php_js_projects\closure-compiler\node_modules\openlay
ers\node_modules\closure-util\node_modules\async\lib\async.js:579:34)
at Immediate._onImmediate (C:\Roy\websites\php_js_projects\closure-compiler\
node_modules\openlayers\node_modules\closure-util\node_modules\async\lib\async.j
s:495:34)
at processImmediate [as _immediateCallback] (timers.js:358:17)
Я не нахожу поиски в Google или поиски здесь, обсуждающие эту проблему. Есть ли обходной путь?
1 ответ
У меня была именно эта проблема сегодня, и я нашел обходной путь. Я считаю, что проблема в том, что OpenLayers 3 поставляется с устаревшей версией closure-util, указанной в его package.json
, Пока разработчики OpenLayers сами не указали более новую версию, я обнаружил, что переключение closure-util на последнюю версию решило эту проблему для меня.
Временное решение:
Выполните все следующие действия в каталоге OpenLayers (кажется, C:\Roy\websites\php_js_projects\closure-compiler\node_modules\openlayers
в твоем случае). Для согласованности я сделал приведенные ниже примеры, ссылающиеся на ваш путь:
открыто
package.json
ищи"dependencies"
раздел и измените версию closure-util с 1.5.0 на более новую версию (последняя версия 1.7.0 на момент написания этой статьи)."dependencies": { .. "closure-util": "1.5.0", .. },
становится
"dependencies": { .. "closure-util": "1.7.0", .. },
Удалите старую версию closure-util, удалив всю
closure-util
каталог изnode_modules
каталог. (УдалятьC:\Roy\websites\php_js_projects\closure-compiler\node_modules\openlayers\node_modules\closure-util
в твоем случае.)Бежать
npm install
в то время как внутриopenlayers
каталог. Это заставит диспетчер пакетов узла автоматически получать последнюю версию closure-util, чтобы заменить ту, которую мы удалили на предыдущем шаге.C:\Roy\websites\php_js_projects\closure-compiler\node_modules\openlayers>npm install - > ws@0.4.32 install C:\Roy\websites\php_js_projects\closure-compiler\node_modules\openlayers\node_modules\closure-util\node_modules\socket.io\node_modules\socket.io-client\node_modules\ws ..snip.. > closure-util@1.7.0 postinstall C:\Roy\websites\php_js_projects\closure-compiler\node_modules\openlayers\node_modules\closure-util > node ./bin/closure-util.js update info install Downloading http://dl.google.com/closure-compiler/compiler-20150729.zip ..snip..
Попробуйте свою сборку еще раз.
C:\Roy\websites\php_js_projects\closure-compiler>node_modules\openlayers\node_modules\.bin\closure-util build config.json app.js