#javascript #node.js #environment-variables #iisnode
Вопрос:
В настоящее время я развертываю приложение, созданное мной на нашем внутреннем IIS-сервере.
У меня есть интерфейс, встроенный в ReactJS, и серверная часть обрабатывается приложением Nodejs. Все работает нормально, пока я не использую os.userInfo(). Например, для запроса:
app.get("/api/getcurrentuser", async function (req, res) {
await pool1Connect;
try {
let user = await pool1
.request()
.query(
`SELECT * FROM dbo.Einkauf_Web_Benutzer_DEV WHERE AUTH_User = '${
process.env.USERDOMAIN "\" os.userInfo().username
}'`
);
res.send(user.recordsets);
} catch (error) {
console.log(error);
}
});
В моей локальной среде разработки он работал просто отлично, но когда я развернул его на сервере IIS, он начал сбоить из-за нехватки памяти. Даже несмотря на то, что когда я выполняю API через node.exe он показывает мне имя пользователя, которое я получаю от os.userInfo().имя пользователя:
Но когда я назначаю переменную с os.userInfo().имя пользователя, все мое приложение выходит из строя и отображает эту ошибку:
SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_os_get_passwd returned ENOMEM (not enough memory)
at Object.userInfo (os.js:270:11)
at C:inetpubwwwrootektoolv2apiapi.js:53:46
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 'ERR_SYSTEM_ERROR',
info: {
errno: -4057,
code: 'ENOMEM',
message: 'not enough memory',
syscall: 'uv_os_get_passwd'
},
errno: [Getter/Setter: -4057],
syscall: [Getter/Setter: 'uv_os_get_passwd']
}
Я уверен, что это проблема с памятью, но почему я могу консольно регистрировать ее, если на меня не падает приложение?