【问题标题】:Is it possible to import something from a module, then use it from the Deno command prompt?是否可以从模块中导入某些内容,然后在 Deno 命令提示符下使用它?
【发布时间】:2020-09-21 18:19:00
【问题描述】:

是否可以从模块中导入某些内容,然后在 Deno 命令提示符下使用它?如果没有,我可以使用其他技巧来调试模块吗?

我正在尝试做的事情:

[phil@joey-mousepad ~/deno]$ deno
Deno 1.3.3
exit using ctrl+d or close()
> import { myFunction } from "./MyLibrary.js";
Uncaught SyntaxError: Cannot use import statement outside a module
    at evaluate (rt/40_repl.js:60:36)
    at replLoop (rt/40_repl.js:160:15)
>

这在我的主程序中运行良好:

import { myFunction } from "./MyLibrary.js";
console.log(myFunction(1, “foo”, null));

但是 myFunction() 有一个 bug 什么的。我想快速尝试使用许多不同的输入来运行它来自控制台,而不是编辑我的主程序并一遍又一遍地重新启动 Deno。

目前我正在使用 Deno,但同样的问题也适用于网页中的模块。 (理想情况下,我会在 Deno 程序和网页中重用一些模块!)当我处理网页时,我想从 Chrome 的 JavaScript 控制台访问模块。

Mozilla 承认这个问题,但没有提供解决方案。 “你将无法从 JavaScript 控制台访问它们”https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules

【问题讨论】:

  • 你可能想搜索 Deno 问题跟踪器。例如。 github.com/denoland/deno/issues/1285, github.com/denoland/deno/issues/2629, (基本上,from .. import .. 必须,根据定义,在 REPL 无法强制执行的任何其他代码之前加载)。但是,您是否尝试过动态导入,它在运行时的任何地方都允许并返回一个承诺? import("./MyLibrary.js").then(... => ...)

标签: javascript deno


【解决方案1】:

这个答案来自其中一个 cmets。为了完整起见,我添加了更多细节。

import("./MyLibrary.js").then(module => window.MyLibrary = module);

紧随其后

MyLibrary.myFunction(2, "bar", undefined);

Deno 会自动告诉你它何时加载了模块并且可以安全地调用该函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2012-01-29
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多