NodeJS JS -需要子进程(& C)

wi3ka0sx  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(121)

我想从我的代码做一个命令,所以我创建了一个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}`);
    });  
}

附言:如果我在终端启动脚本,它会工作,但如果我在浏览器中启动页面,它就不会工作
有人知道怎么解决这个问题吗?

ohtdti5x

ohtdti5x1#

您将Require.js提供的require函数与CommonJS modules for Node.js中提供的require函数混淆了。
虽然它们都是用于加载模块的工具,但它们是用于加载不同类型模块的工具。
node:child_process module内置在Node.js中,在Web浏览器中不可用(出于显而易见的安全原因,Web浏览器没有在用户计算机上运行任意可执行文件的特性!)

相关问题