Nativescript 应用程序未在终端中显示 console.log 消息

Posted

技术标签:

【中文标题】Nativescript 应用程序未在终端中显示 console.log 消息【英文标题】:Nativescript application not showing console.log messages in terminal 【发布时间】:2021-02-08 16:07:32 【问题描述】:

我创建了一个新的 nativescript 应用程序(ns create xxxx),然后运行它以将其加载到模拟器中(ns run ios)。

一旦运行,我会在任何地方添加控制台日志(在初始化时,或作为按钮单击等操作),它不会输出到控制台。

我在 Stack 上发现了一个提出类似问题的帖子,但看起来他们从未得到太多反馈(其他人报告了这个问题)。

我尝试在 VSCode 终端和常规终端中运行(所以它不是 VSCode 的东西)。我完全不知道是什么原因造成的。

【问题讨论】:

如果您希望日志显示在 Chrome 开发工具中(我怀疑您是这样),那么您将不会在那里找到它。查看运行应用程序的终端。 【参考方案1】:

这看起来很奇怪,因为console.logs 通常可以正常工作。请检查以下内容

    请确保您不要在发布模式或使用 --env.uglify 标志运行您的应用程序,因为这可能会导致日志记录丢失

    禁用热模块更换选项。有时它会导致问题。

    确保使用正确的console 操作。例如,不支持 console.debug。你可以找到完整列表here

    在下次运行之前删除 node_modulesplatformshooks 文件夹。以防万一。

    你没有被其他对象覆盖的console 对象吗?

    尝试使用alert 更改您的console.log 命令并检查它是否有效。

请在检查完此清单中的所有要点后回来,也请从您的ns doctor 命令添加报告,让我们看看我们是否可以继续

更新:

由于您使用的是基于 M1 处理器的 MacBook,您的问题似乎与此问题有关:

https://github.com/NativeScript/nativescript-cli/issues/5454

不幸的是,我现在能给你的唯一建议是关注该主题以获得一些解决方案或变通方法

【讨论】:

好的,所以我没有(积极地)在发布模式下运行。我尝试在 HMR 关闭且行为相同的情况下运行。我只是在尝试 console.log("hello");我不知道覆盖控制台对象是什么意思,但正如我所提到的,我是从一个新的(ns create)项目中完成的。最后,我使用了警报而不是 console.log,并且我确实收到了警报而没有问题。 NS Doctor 显示一切都很好。我能提供的唯一额外信息是我使用的是我刚购买的新电脑(macbook pro)。所以它是全新安装的一切(VSCode、nativescript、node 等) ok,下次运行前尝试删除node_modulesplatformshooks文件夹,把console.log改成alert看看这行代码是不是真的被调用了跨度> 你的 MacBook 是基于 M1 处理器的吗? 是的,它是 M1。我必须安装节点两次(一次在 ARM 下,一次在 Darwin 下)。但我尽我所能告诉其他一切。该应用程序在模拟器中启动,它只是不显示任何 console.log 消息。我确实删除了上述文件夹(通过 ns clean)并重建...尝试使用 Alert 并且它有效,尝试使用 console.log 并没有 看来您的问题与github.com/NativeScript/nativescript-cli/issues/5454 有关。关注此线程以获取一些更新或解决方法。不幸的是,这就是我目前所能提供的全部帮助。如果您找到有用的解决方案,如果您与我分享,我将不胜感激。【参考方案2】:

我稍后会加入,但这可能会帮助其他在使用基于 M1 的处理器时遇到同样问题的人。

对我来说,使用console.log()(在 iOS 上) 在 Visual Studio Code 中没有显示任何输出,但它确实显示在单独的 Xcode 构建中。所以输出肯定在那里。

我不久前遇到了一个 SO 答案(不记得到底是哪一个),它有这个解决方法,在单独的终端窗口中显示输出。

假设我们有这个:

打开一个新的终端窗口(最好在 VS Code 之外。你马上就会明白为什么),然后运行这个命令:

log stream --level debug --predicate 'senderImagePath contains "NativeScript"'

它将在终端窗口中显示输出,如下所示:

现在,老实说,如果时间戳和“控制台日志”之间的所有内容都被排除在外,我真的认为这会更容易阅读(尤其是当您在较小的屏幕上记录 JSON 数据时)。不幸的是,我还没有弄清楚如何做到这一点。

【讨论】:

【参考方案3】:

我通过将默认设置为trueVue.config.silent 更改为false 解决了这个问题。

您可以在app.js 中的new Vue(...) 之前添加Vue.config.silent = false;

例如:

import Vue from 'nativescript-vue'

import Home from './components/Home'

Vue.config.silent = false;

new Vue(
  render: (h) => h('frame', [h(Home)]),
).$start()

编码愉快!

【讨论】:

以上是关于Nativescript 应用程序未在终端中显示 console.log 消息的主要内容,如果未能解决你的问题,请参考以下文章

Git Bash 未在 VSCode 中显示为终端选项

在 NativeScript 应用程序中生成和显示 PDF

Nativescript - 搜索栏在操作栏中无法正确显示(IOS)

在 NativeScript 中显示 PopOver

在终端“tns preview”命令不起作用。 (本机脚本)

Nativescript:Android 应用程序在模拟器切换选项卡中崩溃,但在控制台中没有任何内容