nodejs-node指令执行js,相对路径的问题

采用原生node.js路由时,相对路径的问题

在dos命令行中执行node命令时,直接使用绝对路径运行js文件,而在进行路由时,采用的是相对路径,于是出现no such file or directory.
01
而代码中路由时,采用的相对路径读取HTML文件,于是才有了不能找到文件的error.
02
出现该问题时,一开始没有通过throw error查看异常,浏览器访问指定url时,界面没有渲染出,但res.end能正确返回字符串,于是主观上认为是否是res.end不能正确返回html文件内容.
然后通过抛出的error发现其实是fs.readFile读取文件路径的问题.误以为node指令执行js文件后,相对路径是以所执行的js文件所在的目录为基准,但事实上,此时我们仍然处在dos窗口打开时的目录,相对路径此时是以dos窗口打开时的目录作为基准。
因此进入需要执行的js文件目录,再通过node执行相应的js文件,相对路径此时才是正确的.
03
能够正常路由了.
04
05

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Node.js 的 child_process 模块来执行 PowerShell 指令。 具体的做法如下: 1. 首先,安装 child_process 模块: ``` npm install child_process ``` 2. 然后,在代码中引入 child_process 模块: ``` const { exec } = require('child_process'); ``` 3. 接下来,使用 exec 方法执行 PowerShell 指令: ``` exec('powershell.exe Get-ChildItem $env:USERPROFILE\Desktop', (error, stdout, stderr) => { if (error) { console.error(`执行错误: ${error}`); return; } console.log(`输出: ${stdout}`); }); ``` 执行上面的代码后,会在控制台输出桌面上的文件和文件夹列表。 如果要获取桌面路径,可以使用如下的 PowerShell 指令: ``` $desktop = [Environment]::GetFolderPath("Desktop") ``` 这样就可以得到桌面的路径了,如果要将它传递回来,可以将它赋值给一个变量,然后在回调函数中使用这个变量。 例如: ``` let desktopPath; exec('powershell.exe $desktop = [Environment]::GetFolderPath("Desktop")', (error, stdout, stderr) => { if (error) { console.error(`执行错误: ${error}`); return; } desktopPath = stdout; }); console.log(desktopPath); ``` 执行上面的代码后,会在控制台输出桌面的路径。 ### 回答2: 要在Node.js执行PowerShell指令来获取桌面路径,并将其传递回来,可以使用`child_process`模块和PowerShell的`$HOME`环境变量。 首先,需要引入`child_process`模块: ```javascript const { execSync } = require('child_process'); ``` 然后,使用以下代码来执行PowerShell指令并获取桌面路径: ```javascript try { const cmd = `powershell -Command "Write-Host $HOME\\Desktop"`; const result = execSync(cmd).toString().trim(); console.log('桌面路径:', result); } catch (error) { console.error('执行PowerShell指令出错:', error); } ``` 在这段代码中,通过执行`powershell -Command`命令来运行PowerShell指令指令中使用`$HOME\\Desktop`来获取桌面路径,并通过调用`Write-Host`将其输出。`execSync`函数用于执行指令,并且通过调用`toString`和`trim`方法将结果转换为字符串并去除首尾空白字符。 最后,将桌面路径传递回来可以通过回调函数、Promise或者async/await等方式实现。例如,可以在指令执行成功后,调用一个回调函数来传递桌面路径: ```javascript try { const cmd = `powershell -Command "Write-Host $HOME\\Desktop"`; const result = execSync(cmd).toString().trim(); console.log('桌面路径:', result); // 调用回调函数,将桌面路径传递回来 callback(result); } catch (error) { console.error('执行PowerShell指令出错:', error); } ``` 注意:上述代码中的`callback`是一个自定义的回调函数,在执行`callback(result)`时,需要替换为实际的回调函数或采用其他传递数据的方式。 ### 回答3: Node.js可以通过child_process模块来执行PowerShell命令并获取桌面路径。 首先,我们需要在Node.js中引入child_process模块: ``` const { execSync } = require('child_process'); ``` 然后,我们可以使用execSync函数来执行PowerShell命令并获取结果: ``` const command = 'powershell.exe -command "(New-Object -ComObject WScript.Shell).SpecialFolders(\'Desktop\')"'; const desktopPath = execSync(command).toString().trim(); console.log(desktopPath); ``` 在上述示例中,我们使用PowerShell的特殊命令`SpecialFolders`来获取桌面路径。通过`execSync`函数执行PowerShell命令,并使用`toString()`方法将其转换为字符串形式,最后使用`trim()`函数去除多余的空格。 我们可以将桌面路径存储在`desktopPath`变量中,并打印出来以进行验证。 需要注意的是,`execSync`函数将同步执行命令,并等待其完成。如果命令执行时间较长或返回大量输出,可能会导致Node.js阻塞。 如果希望以异步的方式执行PowerShell命令,可以使用`exec`函数,并为其提供一个回调函数: ``` const { exec } = require('child_process'); const command = 'powershell.exe -command "(New-Object -ComObject WScript.Shell).SpecialFolders(\'Desktop\')"'; exec(command, (error, stdout, stderr) => { if (error) { console.error(`执行错误: ${error}`); return; } const desktopPath = stdout.trim(); console.log(desktopPath); }); ``` 通过上述方式,我们可以以异步的方式执行PowerShell命令,并在回调函数中处理输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值