我想从我的代码做一个命令,所以我创建了一个js文件,并开始测试。我只想做一个"dir"(ls,但在windows上)。我有这个在我的函数。js:
window.setInterval(function(){
const { exec } = require('node:child_process');
exec('"dir"', (stdout, stderr, err)=>{
console.log(stdout, stderr, err)
});
}, 1000);
但它没有工作,我有这个错误弹出:
Uncaught Error: Module name "node:child_process" has not been loaded yet for context: _. Use require([]) https://requirejs.org/docs/errors.html#notloaded
我想我明白为什么这个不起作用了,但是我不知道怎么样才能使它起作用。有人能给我解释一下吗?
编辑
我仍然有这个问题,但我会继续...现在,在我的控制台中,我有:'请检查模块的费用是否为源节点:子进程'。'
而我的代码是:
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.log(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.log(`stdout:\n${stdout}`);
});
}
附言:如果我在终端启动脚本,它会工作,但如果我在浏览器中启动页面,它就不会工作
有人知道怎么解决这个问题吗?
1条答案
按热度按时间ohtdti5x1#
您将Require.js提供的
require
函数与CommonJS modules for Node.js中提供的require
函数混淆了。虽然它们都是用于加载模块的工具,但它们是用于加载不同类型模块的工具。
node:child_process
module内置在Node.js中,在Web浏览器中不可用(出于显而易见的安全原因,Web浏览器没有在用户计算机上运行任意可执行文件的特性!)