【问题标题】:Node module "open" is not opening URL节点模块“打开”未打开 URL
【发布时间】:2019-09-15 23:56:30
【问题描述】:

我正在尝试使用节点模块 OPEN 打开 URL,但它不起作用。我已经安装了 Open,我可以在节点模块文件夹中看到打开的模块。

下面是我的代码。

const open = require('open');

 open('https://myurl');

我正在开发 Microsoft 机器人框架。在 AZURE 中部署代码。相同的代码在模拟器中工作,但在浏览器中它不工作。

感谢任何帮助。

谢谢 桑吉夫·高塔姆

【问题讨论】:

    标签: node.js botframework bots node-modules


    【解决方案1】:

    在构建机器人或任何网络应用程序时,重要的是要考虑到有两个方面:服务器和客户端。当您连接到模拟器时,您正在本地运行机器人,因此服务器正在本地运行。当您部署机器人时,服务器正在 Azure 中运行,并且不再有权访问用户的计算机。

    查看您的代码,您在机器人端或服务器端调用open('https://myurl') - 而不是客户端。当机器人在本地运行时,服务器会在您的计算机上打开网页,因此一切似乎都可以正常工作,但是当它在 Azure 上运行时,它会尝试在 Azure 中打开用户无法访问的网页。

    不幸的是,您无法从服务器控制客户端的行为,因此您必须发送带有打开 url 操作的 card 或将链接发送给用户以进行关注。

    【讨论】:

    • 或者,在浏览器中托管机器人? :)
    【解决方案2】:

    那是因为您似乎忽略了他们的文档并忽略了返回的承诺。

    这样使用

    const open = require('open')
    
    console.log(await open('http://www.stackoverflow.com'))
    

    我需要提到它应该在异步函数中运行吗? :)

    【讨论】:

    • 感谢您的回复。我尝试了等待,它不起作用。
    • 它在我这边工作。所以问题不在于库,而在于您的设置中的某个地方。尝试更新 npm,然后删除 node-modules 文件夹和 npm -i。
    【解决方案3】:

    根据官方文档用法:https://www.npmjs.com/package/open

    const open = require('open');
    
    (async () => {
    
        // Opens the URL in the default browser
        await open('https://sindresorhus.com');
    
    })();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2020-01-07
      • 1970-01-01
      • 2021-04-01
      相关资源
      最近更新 更多