我正在尝试从Laravel控制器函数运行节点js文件函数。基本上称为translate.js
的节点js文件具有可以translate input text to required language
的函数(如英语到印地语等)。
我已经通过调试进行了一些测试,但每次从Laravel控制器函数执行节点脚本时都会出现错误。
收到错误:
命令“node D:\Laragon\www\krutech\translate.js“我想尝试将文本转换为印地语。”hi”失败。退出代码:1(一般错误)工作目录:D:\拉腊贡\www\克鲁泰克\公共输出:================错误输出:================文件名、目录名或卷标语法不正确。
其中D:\Laragon\www\krutech\translate.js
是Laravel项目根目录中的节点js文件。
其中D:\Laragon\www\krutech
为Laravel项目
翻译.js代码:
const { translate } = require('@vitalets/google-translate-api');
function translateText(text, targetLang) {
return translate(text, { to: targetLang })
.then(res => {
return res.text;
})
.catch(err => {
console.error(err);
return "Translation failed";
});
}
module.exports = {
translateText: translateText
};
const textToTranslate = process.argv[2];
const targetLang = process.argv[3];
if (textToTranslate && targetLang) {
translateText(textToTranslate, targetLang)
.then(res => console.log(res))
.catch((err) => console.error(`Translation failed: ${err}`));
} else {
console.error('Please provide text to translate and target language code');
}
Laravel控制器功能代码:
public function index()
{
$text = 'I want to try convert my text into hindi language.';
$targetLang = 'hi';
$pathToTranslateJS = base_path('translate.js');
$command = "node " . $pathToTranslateJS . " " . escapeshellarg($text) . " " . $targetLang;
$process = new Process([$command]);
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
$translatedText = $process->getOutput();
return $translatedText;
}
当我尝试使用此命令从命令行运行节点文件时,它工作正常,我得到了所需的结果。
命令:node translate.js "I want to try convert my text into hindi language." hi
结果:मैं अपने टेक्स्ट को हिंदी भाषा में बदलने की कोशिश करना चाहता हूं।
但是Laravel控制器有什么问题?我找不到解决的方法?
我当前的Laravel版本是7.29
2条答案
按热度按时间3zwtqj6y1#
https://laravel.com/docs/10.x/processes#invoking-processes
这在Process类的正式文档中
当你使用
e4eetjau2#
从我所看到的你的错误代码在公共文件夹内执行,而你把js文件在根目录,尝试移动它在公共或更改代码,它转到根目录,然后执行