从 NodeJS 中执行 osascript(AppleScript)

发布于 2024-11-13 15:53:54 字数 554 浏览 5 评论 0原文

我知道我可能非常想念这一点,

但有人知道为什么这会不断返回错误吗?

$ node -v && node
v0.4.6
> var cmd = 'osascript -e "open location \"http://google.com\""';
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error); });

//Error message
> { 
    stack: [Getter/Setter],
    arguments: undefined,
    type: undefined,
    message: 'Command failed: 15:20: syntax error: A “:” can’t go after this identifier. (-2740)\n',
    killed: false,
    code: 1,
    signal: null 
}

也许它与 cmd 中的双引号有关?

I know I am probably missing this hugely,

but anyone knows why this keeps returning an error?

$ node -v && node
v0.4.6
> var cmd = 'osascript -e "open location \"http://google.com\""';
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error); });

//Error message
> { 
    stack: [Getter/Setter],
    arguments: undefined,
    type: undefined,
    message: 'Command failed: 15:20: syntax error: A “:” can’t go after this identifier. (-2740)\n',
    killed: false,
    code: 1,
    signal: null 
}

Perhaps it has something to do with the double quotes in the cmd?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伪心 2024-11-20 15:53:54

可能只是引用问题。这对我有用:

$ node -v && node
v0.4.8
> var cmd = 'osascript -e \'open location \"http://google.com\"\'';
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error); });

顺便说一句,如果您只想打开一个 URL,则无需通过 AppleScript。只需使用打开命令:

> var cmd = 'open \"http://google.com\"';

Probably just a quoting issue. This one works for me:

$ node -v && node
v0.4.8
> var cmd = 'osascript -e \'open location \"http://google.com\"\'';
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error); });

Btw, if you just want to open a URL, there is no need to go through AppleScript. Just use the open command:

> var cmd = 'open \"http://google.com\"';
不必在意 2024-11-20 15:53:54

这可以通过当前节点版本中的反引号

$ node -v && node
v10.5.0
> let cmd = `osascript -e 'open location "http://google.com"'`
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error) })

和 open 命令来简化

var cmd = `open "http://google.com"`

This is simplified through backticks in current node version

$ node -v && node
v10.5.0
> let cmd = `osascript -e 'open location "http://google.com"'`
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error) })

and for the open command

var cmd = `open "http://google.com"`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文