Возможно ли разместить приложение Node.js на Azure с собственным модулем? [Дубликат]

Вы также можете начать с удаления всех нечисловых символов и затем разбора int:

string mystr = mystr.replaceAll( "[^\\d]", "" );
int number= Integer.parseInt(mystr);

. Но следует предупредить, что это работает только для неотрицательных чисел.

10
задан mikebz 26 September 2013 в 23:35
поделиться

2 ответа

Ограничение веб-сайтов. См. Раздел «Нативные модули» в http://azure.microsoft.com/en-us/documentation/articles/nodejs-use-node-modules-azure-apps/ .

Обходное решение / разрешение - установить все модули в окне разработчика Windows и включить node_modules в качестве части развертывания git.

9
ответ дан lyyons 27 August 2018 в 22:12
поделиться

Недавно я успешно развернул приложение Node.js app / Sails, работающее как веб-приложение Azure, которое опирается на Grunt и поэтому нуждается в поддержке node-gyp. Сначала я изо всех сил пытался получить node-gyp для непрерывного развертывания без включения папки node_modules, но в итоге я преуспел в том, что вы, надеюсь, называете «грациозным разрешением». Необходимые для меня шаги:

  1. Убедитесь, что вы используете несколько обновленную версию Node и NPM (насколько Azure позволяет это сделать: в моем случае я использовал узел 5.4.0 и npm 3.3.12. Развертывание на Azure существует два способа, которые я знаю для этого: Настройки приложения: WEBSITE_NODE_DEFAULT_VERSION 5.4.0 (или что-то еще). Package.json file: Включить следующее:
    "engines": {    
        "node": "5.4.0",    
        "npm": "3.3.12"  
    },
    
  2. Измените настройки в файле config / env / production.js, чтобы дать больше времени, чтобы угадать или что-то еще. Значение по умолчанию 20 секунд кажется слишком низким для большого количества приложений, однако может быть лучше способы решения этой проблемы: https://github.com/balderdashy/sails/issues/2691 Я поставил:
    hookTimeout: 60000, // 60 seconds
    
  3. Я использовал .deployment и deploy.cmd / deploy.sh (в зависимости от вашей системы) для настройки развертывания на платформе Azure. Руководство, которое я использовал, было: http://www.cptloadtest.com/2013/12/03/Git-And-Grunt- Deploy-To-Windows-Azure.aspx EDIT: выглядит как моя оригинальная команда для запуска Grun t из deploy.cmd неверно, я не знаком с bash-скриптами, извините. В результате я использовал сценарий из этого вопроса с некоторыми изменениями: Развертывание приложения NodeJS на Azure Websites не удается установить пакеты NPM из pagages.json из deploy.cmd? Используя этот скрипт, моя задача grunt выполняется при развертывании , Вот измененные части моего скрипта. deploy.cmd:
    :: Setup
    :: -----        
    
    :: ... some default parts omitted
    
    IF NOT DEFINED GRUNT_CMD (
      :: Install grunt
      echo Installing Grunt
      call npm --registry "http://registry.npmjs.org/" install grunt-cli
      IF !ERRORLEVEL! NEQ 0 goto error
    
      :: Locally just running "grunt" would also work
    SET GRUNT_CMD=node "%DEPLOYMENT_SOURCE%\node_modules\grunt-cli\bin\grunt"
    )
    
    goto Deployment
    
    :: Utility Functions
    :: -----------------
    
    :SelectNodeVersion
    
    :: ... some default parts omitted
    
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :Deployment
    echo Handling node.js deployment.
    echo %DEPLOYMENT_SOURCE%
    
    echo 1. Select node version
    call :SelectNodeVersion
    
    echo 2. Install npm packages dev dependencies
    IF EXIST "%DEPLOYMENT_SOURCE%\package.json" (
      pushd "%DEPLOYMENT_SOURCE%"
      echo Cleaning NPM cache.
      call !NPM_CMD! cache clean
      call !NPM_CMD! install --development
      IF !ERRORLEVEL! NEQ 0 goto error
      popd
    )        
    
    echo 4. Run grunt prod task
    pushd %DEPLOYMENT_SOURCE%
    call !GRUNT_CMD! --no-color prod
    IF !ERRORLEVEL! NEQ 0 goto error
    popd
    
    echo 5. KuduSync
    IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
      call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
      IF !ERRORLEVEL! NEQ 0 goto error
    )
    
    echo 6. Install npm packages production
    IF EXIST "%DEPLOYMENT_TARGET%\package.json" (
      pushd %DEPLOYMENT_TARGET%
      call !NPM_CMD! install --production
      IF !ERRORLEVEL! NEQ 0 goto error
      popd
    )
    
  4. Затем я столкнулся с этой ошибкой: ENOTSUP с использованием Grunt , который был недавно решен. :) Все, что мне осталось сделать, это изменить для deploy.sh данного синтаксиса для работы в моем deploy.cmd. Поэтому перед запуском grunt из deploy.cmd я включил:
    echo 3. Update erroneous glob dependency in Grunt 
    pushd "%DEPLOYMENT_SOURCE%\node_modules\grunt"
    call :ExecuteCmd !NPM_CMD! install glob@^6.0.4 --save
    IF !ERRORLEVEL! NEQ 0 goto error
    popd
    

Надеюсь, это поможет некоторым из вас там, хотя я знаю, что некоторые из проблем, с которыми я столкнулся, могут быть решены используя современные версии узла и npm. Но так как Azure не в курсе последних версий, это может быть полезно для некоторых из вас.

EDIT:

Относительно:

  1. Выбор версии узла: я попытался выбрать версию узла, установив его только в Package.json без изменения по умолчанию в настройках приложения (версия по умолчанию: 4.2.3), и я до сих пор получил следующую ошибку:
    Node.js versions available on the platform are: 0.6.20, 0.8.2, 0.8.19, 0.8.26, 0.8.27, 0.8.28, 0.10.5, 0.10.18, 0.10.21, 0.10.24, 0.10.26, 0.10.28, 0.10.29, 0.10.31, 0.10.32, 0.10.40, 0.12.0, 0.12.2, 0.12.3, 0.12.6, 4.0.0, 4.1.0, 4.1.2, 4.2.1, 4.2.2, 4.2.3, 4.2.4, 5.0.0, 5.1.1, 5.3.0, 5.4.0, 5.5.0.
    Selected node.js version 5.4.0. Use package.json file to choose a different version.
    Selected npm version 3.3.12
    Updating iisnode.yml at D:\home\site\wwwroot\iisnode.yml
    3. Install npm packages
    npm WARN deprecated lodash@0.9.2: lodash@<2.0.0 is no longer maintained. Upgrade to lodash@^3.0.0
    npm WARN deprecated grunt-lib-contrib@0.7.1: DEPRECATED. See readme: https://github.com/gruntjs/grunt-lib-contrib
    npm WARN deprecated lodash@1.0.2: lodash@<2.0.0 is no longer maintained. Upgrade to lodash@^3.0.0
    > sails@0.11.4 preinstall D:\home\site\wwwroot\node_modules\.staging\sails-bbe9b0ace9f7789c8522238af14fe27a
    > node ./lib/preinstall_npmcheck.js
    
    Sails.js Installation: Checking npm-version successful
    npm WARN prefer global grunt-cli@0.1.13 should be installed with -g
    
    > fibers@1.0.8 install D:\home\site\wwwroot\node_modules\fibers
    > node build.js || nodejs build.js
    
    
    D:\home\site\wwwroot\node_modules\fibers>if not defined npm_config_node_gyp (node "c:\Program Files (x86)\npm\3.3.12\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild --release )  else (node  rebuild --release ) 
    Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
      fibers.cc
      coroutine.cc
    ..\src\fibers.cc : fatal error C1902: Program database manager mismatch; please check your installation [D:\home\site\wwwroot\node_modules\fibers\build\fibers.vcxproj]
    ..\src\coroutine.cc : fatal error C1902: Program database manager mismatch; please check your installation [D:\home\site\wwwroot\node_modules\fibers\build\fibers.vcxproj]
    gyp ERR! build error 
    gyp ERR! stack Error: `msbuild` failed with exit code: 1
    gyp ERR! stack     at ChildProcess.onExit (c:\Program Files (x86)\npm\3.3.12\node_modules\npm\node_modules\node-gyp\lib\build.js:270:23)
    gyp ERR! stack     at emitTwo (events.js:87:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
    gyp ERR! System Windows_NT 6.2.9200
    gyp ERR! command "D:\\Program Files (x86)\\nodejs\\4.2.3\\node.exe" "c:\\Program Files (x86)\\npm\\3.3.12\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--release"
    gyp ERR! cwd D:\home\site\wwwroot\node_modules\fibers
    gyp ERR! node -v v4.2.3
    gyp ERR! node-gyp -v v3.0.3
    Build failed
    
    Как вы можете видеть, она сначала указывает:
    Selected node.js version 5.4.0. Use package.json file to choose a different version.
    
    в соответствии с файлом Package.json. Однако позже в сообщении об ошибке это, похоже, изменилось:
    gyp ERR! node -v v4.2.3
    
    Для меня неясно, почему эта ошибка возникает, поскольку версия в файле Package.json должна быть перезаписана по умолчанию в настройках приложения. Поэтому, конечно, установите оба параметра в достаточно высокую версию (не уверен, когда проблема с узлом-gyp была решена, но 5.4.0, похоже, работает нормально!).
5
ответ дан Community 27 August 2018 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: