2017-02-02 6 views
2

При развертывании node.js/express приложения на Azure Websites я получаю сообщение «Can not GET /» в браузере. То же приложение работает безупречно на локальной машине.Azure Websites + node.js - Не удается GET/

web.config является стандартным (я только удалил статического правила перезаписи), так:

<!-- All other URLs are mapped to the node.js site entry point --> 
    <rule name="DynamicContent"> 
     <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> 
     </conditions> 
     <action type="Rewrite" url="src/server/app.js"/> 
    </rule> 
    </rules> 

код развернут в src/server/ (узловых функций) и src/client/ папок (Статическое содержимое).

В соответствии с FREB регистрирует ЦСИ/сервер/apps.js забирается, но в конце концов выбрасывается следующее сообщение об ошибке:

ErrorCode The system cannot find the file specified.  (0x80070002) 

app.js Внутри у меня есть следующие конфигурации для статических файлов:

app.use(express.static('./src/client/')); 

ответ

1

Веб-сайты Azure запускают узел из папки, в которой находится файл, определенный в package json, в качестве стартового файла, поэтому, например, для следующих целей:

"start": "node src/server/app.js" 

факт он будет работать node app.js из папки src/server (вы можете найти там также файл iisnode.yml). Это приводит к тому, что все относительные пути запутываются. Одним из решений для этого является использование абсолютных путей, например, например:

app.use(express.static('D:/home/site/wwwroot/src/client/')); 

и переключение между путями с использованием, например, process.env.NODE_ENV переменная.

+0

Другим решением является перемещение сценария запуска из src/server/в wwwroot/folder. Это потребует изменений только в одном файле. –