Я хотел сделать команду из своего кода, поэтому создал файл js и начал тестирование. Я только хочу сделать «режим» (ls, но на окнах). У меня есть это в моих functions.js:
window.setInterval(function(){
const { exec } = require('node:child_process');
exec('"dir"', (stdout, stderr, err)=>{
console.info(stdout, stderr, err)
});
}, 1000);
Но это не сработало, и у меня появляется эта ошибка:
Неперехваченная ошибка: имя модуля «node:child_process» не загружено еще для контекста: _. Используйте требование ([]) https://requirejs.org/docs/errors.html#notloaded
Я думаю, что понимаю, почему это не работает, но я не знаю, как заставить это работать. Может кто-нибудь объяснить это мне, пожалуйста?
РЕДАКТИРОВАТЬ
У меня все еще есть эта проблема, но я иду вперед ... Теперь в моей консоли у меня есть: 'Проверить плату за модуль, не используя исходный код « node:child_process ».'
в то время как мой код:
import { exec } from 'node:child_process';
И моя функция выглядит так:
let first = true;
const timer = 60000; //in milliseconds
/**
* Make a command prompt and write in it the command for checking if there are sessions which need to be deleted.
*/
function deleteOverSessions(){
console.info(first);
exec('echo %cd%');
if (first){
exec('cd ../../..');
first = false;
}
exec('symfony console session:check-and-delete-finished-ones', (error, stdout, stderr) => {
if (error) {
console.error(`error: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.info(`stdout:\n${stdout}`);
});
}
PS: это работает, если я запускаю скрипт в терминале, но не запускаю страницу в браузере.
Кто-нибудь знает, как решить эту проблему?
Да, извините, я отредактировал с вопросом
Непонятно, какую проблему вы пытаетесь решить. Вы не можете импортировать модули Node.js в браузере. Вы не можете запускать исполняемые файлы в браузере. Вы получаете сообщение об ошибке, потому что пытаетесь сделать что-то невозможное.
Да, @jabaa. Это то, что Квентин также объяснил мне. Я нашел другой способ делать то, что хочу, без использования этого механизма, так что теперь все хорошо. :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы путаете функцию require, предоставляемую Require.js , с функцией require, предоставляемой в модулях CommonJS для Node.js.
Хотя они оба являются инструментами для загрузки модулей, они являются инструментами для загрузки различных типов модулей.
Модуль node:child_process встроен в Node.js и недоступен в веб-браузерах (которые, надеюсь, по очевидным соображениям безопасности не имеют функций для запуска произвольных исполняемых файлов на компьютере пользователя!)
Хорошо, я вижу @Quentin. Так что я могу сделать? Потому что моя цель - сравнить новое Datetime (сейчас) с DateTime из моей базы данных. Я сделал свое приложение с Symfony, поэтому мне нужно, чтобы оно работало в веб-браузере ^^. Если это невозможно (так и должно быть, как вы сказали), нужно ли мне создавать новую функцию js, работающую рядом с моим проектом?
Я понятия не имею, почему вы думаете, что вам нужно создать дочерний процесс, чтобы добиться этого. (Вы не можете получить доступ к базе данных на стороне сервера из браузера, сделать HTTP-запрос и обработать его в PHP).
Я нашел это решение, ища, как делать то, что я хочу, с помощью PHP, и я не нашел решений, поэтому теперь я пытаюсь использовать js. Но, видимо, вы говорите мне, что я могу сделать это с помощью PHP. Я не понимаю, насколько честно, можете ли вы показать мне, пожалуйста?
Если я не ясно, вы можете проверить; gist.github.com/amirkheirabadi73/9342420 И ответ CommandString натолкнул на мысль использовать JS --> буду искать как это сделать с AJAX
Я только что отредактировал свой пост, если вы все еще она, помогите мне, пожалуйста ^^
Ваше редактирование показывает, что вы пытаетесь разными способами убедить node:child_process работать в браузере. Я отсылаю вас к последнему абзацу моего ответа.
Stack Overflow — это платформа вопросов и ответов. У вас есть вопрос? "Может ли кто-нибудь объяснить это мне, пожалуйста?" ваш актуальный вопрос? Если да, то ответ: Да, кто-нибудь может объяснить это вам.