ОШИБКА: не удается найти модуль ‘../constants.js ‘ — если pm2 запускается как сценарий запуска в службе приложений Azure

#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:

у меня была такая же проблема с константами, но в другом модуле узла.

  1. я удалил node_modules и файл блокировки.
  2. начал переустанавливать это и исправлять новую проблему, проблема заключалась в нехватке свободного места: «ENOSPC: на устройстве не осталось места, напишите»
  3. исправил это, и теперь я счастлив ^)