#node.js #azure #azure-web-app-service #pm2
#node.js #azure #azure-web-app-service #pm2
Вопрос:
При переходе на службу приложений Azure в Linux мое приложение не запускается при запуске:
> NODE_ENV=production pm2 start server.js
internal/modules/cjs/loader.js:573
throw err;
^
Error: Cannot find module '../constants.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:571:15)
at Function.Module._load (internal/modules/cjs/loader.js:497:25)
at Module.require (internal/modules/cjs/loader.js:626:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/home/site/wwwroot/node_modules/.bin/pm2:11:20)
at Module._compile (internal/modules/cjs/loader.js:678:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10)
at Module.load (internal/modules/cjs/loader.js:589:32)
at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
at Function.Module._load (internal/modules/cjs/loader.js:520:3)
package.json
{
"name": "my-app",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"start": "NODE_ENV=production pm2 start server.js",
"dev": "nodemon --ignore './public' server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"pm2": "^3.3.1"
...
},
"devDependencies": {
"nodemon": "^1.18.6",
}
}
Служба приложений имеет pm2, установленный глобально, и если я закомментирую свой сценарий запуска, он выберет мой server.js автоматически, что работает, но мне нужно, чтобы мой собственный сценарий запуска работал, чтобы установить некоторые переменные ENV.
Есть идеи? Спасибо
Комментарии:
1. Если вы выполняете это с сайта /wwwroot/, то …/ означает, что вы ищете файл в папке сайта. Вы пробовали./constants.js ? Что, если вы переместите server.js в вашу папку с исходным кодом (например, src/server.js )?
2. Я полагаю, что вам необходимо изменить этот относительный путь, например
../constants.js
, на абсолютный путьD:/home/site/wwwroot/constants.js
, поскольку относительный путь основан на пути IIS, запущенного iis-узлом в службе приложений Azure.3. Спасибо, @MitchStewart
../constants.js
зависит от pm2, поэтому я не знаю, как его переместить. @Питер Пэн — спасибо, однако я нахожусь на экземпляре Linux и, как уже упоминалось constants.js является деп. pm2.
Ответ №1:
у меня была такая же проблема с константами, но в другом модуле узла.
- я удалил node_modules и файл блокировки.
- начал переустанавливать это и исправлять новую проблему, проблема заключалась в нехватке свободного места: «ENOSPC: на устройстве не осталось места, напишите»
- исправил это, и теперь я счастлив ^)