ES6 模块如何在 Node 中作为脚本运行?
当我尝试这个shebang时,我收到一个错误:
#!/usr/bin/env node --experimental-modules
Run Code Online (Sandbox Code Playgroud)
/usr/bin/env: 'node --experimental-modules': 没有那个文件或目录
如果我使用这个shebang,它有语法错误(当然):
#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)
语法错误:意外的令牌导入
我正在使用的解决方法是使用 shell 脚本来调用模块:
#!/usr/bin/env sh
BASEDIR=$( dirname "$0" )
node --experimental-modules $BASEDIR/script.mjs "$@"
Run Code Online (Sandbox Code Playgroud)
是否可以在没有第二个文件的情况下使其工作?
我最近将我的交易电子邮件发送到Mailgun
到目前为止它工作得很好,但我想知道返回路径标题.
考虑这封电子邮件(为了隐私目的,我删除了不相关的标题并替换了电子邮件/域
Delivered-To: RECIEVER@gmail.com
Received: by 10.76.154.104 with SMTP id vn8csp478308oab;
Wed, 4 Sep 2013 05:04:44 -0700 (PDT)
X-Received: by 10.50.22.105 with SMTP id c9mr1537992igf.36.1378296283817;
Wed, 04 Sep 2013 05:04:43 -0700 (PDT)
Return-Path: <bounce+a801a1.c2b37-RECIEVER=gmail.com@my-website.com>
Received: from so254-63.mailgun.net (so254-63.mailgun.net. [198.61.254.63])
by mx.google.com with ESMTP id k5si1620852igx.55.1969.12.31.16.00.00;
Wed, 04 Sep 2013 05:04:43 -0700 (PDT)
Received-SPF: ...stripped...
Authentication-Results: ...stripped...
DKIM-Signature: ...stripped...
DomainKey-Signature: ...stripped...
Received: by luna.mailgun.net with HTTP; Wed, 04 Sep 2013 12:04:42 +0000
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Subject: ...stripped... …
Run Code Online (Sandbox Code Playgroud) 对于一个学校项目,我正在努力创建一个能够完成任务的网站.为了实现它,我使用的是HTML,JavaScript和CSS.我正在使用一个提供调试提示的编译器.这些提示由JSLint提供.我被告知我应该结合我写的两个变量,但我不明白这意味着什么.
我做了一些研究(在Stack Overflow和其他网站上),但所有这些都想出了将变量放入数组的人.
有人会向我解释我该做什么吗?
代码(简化):
var x = document.getElementById("some id");
var y = document.getElementById("some other id");
var z = document.getElementsByTagName("some tag name");
Run Code Online (Sandbox Code Playgroud)
而JSLint说:
"将此与前面的'var'语句结合使用:var y = document.getElementById("some other id");" 和:
将其与之前的'var'语句相结合.var z = document.getElementsByTagName("some tag name");
重要说明:代码确实有效,但JSLint告诉我修复它.
我有一个Vec
我想返回并使用 wasm-bindgen 转换为类型化数组,即将 a 转换Vec<u32>
为Uint32Array
. 根据我的研究,wasm-bindgen 现在无法自动处理这些转换(就像它所做的那样String
),而您必须使用js-sys板条箱。然而,我还没有找到如何使用这个板条箱的明确示例。如果可以提供如何使用它的清晰简单的示例,我们将不胜感激。
为了完整起见,如果答案能够解释如何公开返回 a 的函数Vec<u32>
以及结构成员,即如何将这些定义转换为可用的内容,那就太好了:
#[wasm_bindgen]
pub fn my_func() -> Vec<u32> {
inner_func() // returns Vec<u32>
}
#[wasm_bindgen]
pub struct my_struct {
#[wasm_bindgen(readonly)]
pub my_vec: Vec<u32>,
}
Run Code Online (Sandbox Code Playgroud) 大约一周前,我注意到 Android Chrome 在我的应用程序(羊皮纸)键盘上方显示了一个密码自动填充栏。HTML 如下<input>
,这绝对不是密码输入:
<input aria-hidden="false" autocapitalize="off" class="Input LineInput" type="text" maxlength="120">
Run Code Online (Sandbox Code Playgroud)
有谁知道什么会让 Chrome 认为应该显示密码自动填充栏,以及可以采取什么措施来阻止这种情况发生?
我正在研究什么应该是一个非常简单的 OS X 应用程序包。我的操作系统是 10.7.5 版。在这种情况下,应用程序是一个 shell 脚本。
Kekerkruip.app/Contents/Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>Kerkerkruip</string>
<key>CFBundleIconFile</key>
<string>Kicon.icns</string>
<key>CFBundleIdentifier</key>
<string>org.kerkerkruip.Kerkerkruip</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Kerkerkruip</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<!--<key>CFBundleSignature</key>
<string>????</string>-->
<key>CFBundleVersion</key>
<string>9.0.1</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>NSHumanReadableCopyright</key>
<string>© 2011-2015 by the Kerkerkruip team</string>
<!--<key>NSMainNibFile</key>
<string>MainMenu</string>-->
<!--<key>NSPrincipalClass</key>
<string>NSApplication</string>-->
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
Kekerkruip.app/Contents/MacOS/Kerkerkruip:
#!/usr/bin/env bash
echo "This is a blank script." 1>&2
exit 1
Run Code Online (Sandbox Code Playgroud)
当我尝试打开应用程序时,我收到以下错误消息:
$ open Kerkerkruip.app/
The application cannot be opened because it has an …
Run Code Online (Sandbox Code Playgroud) 如何让 Phaser 游戏自动填充浏览器窗口?(理想情况下,如果窗口更改大小,则自动重新填充。)我知道有一个ScaleManager 类,但文档不清楚如何使用它。我还找到了其他说明,但它们没有指出在哪里添加他们建议的代码,并且在创建 Game 类后立即运行它似乎没有任何作用。
我目前正在使用本教程中的基本代码,但我愿意完全改变它。
我正在开发一个具有函数的库,我希望能够接受任何散列算法的 HashMap。但是当我尝试使用特定类型的 HashMap(例如 FnvHashMap)调用它时,编译器会抱怨。
pub fn func(map: HashMap<u32, u32>) {}
let map: FnvHashMap<u32, u32> = FnvHashMap::default();
func(map);
Run Code Online (Sandbox Code Playgroud)
error[E0308]: mismatched types
--> lib.rs:42:10
|
42 | func(map);
| ^^^ expected struct `RandomState`, found struct `BuildHasherDefault`
|
= note: expected struct `HashMap<_, _, RandomState>`
found struct `HashMap<_, _, BuildHasherDefault<FnvHasher>>`
Run Code Online (Sandbox Code Playgroud)
由于FnvHashMap只是一个类型别名,我认为这不会成为问题。
我确定有办法做到这一点,但我还没有找到。正确的方法是什么?
我有一个Vec
字符串(str
或String
),我想将它们用作 的参数format!()
。如果...
JS 的语法可用,我会这样做:
let data = vec!["A", "B", "C"];
let result = format!("{} says hello to {} but not to {}", ...data);
Run Code Online (Sandbox Code Playgroud)
Rust 中是否有任何替代方案可以使类似的事情成为可能,并且理想情况下不会变得非常冗长?
我认为部分困难在于Vec
参数的数量可能不正确,因此如果参数数量错误,我可以接受它会出现恐慌。
我一直在开发一个生成 C 代码的反编译器(用于Glulx )。在一种模式下,它在一个 switch 语句中输出所有代码(打开程序计数器)。一个中等大小的输入文件会产生近 11,000 个案例,GCC 需要很长时间来编译它 - 在我的计算机上几乎需要 5 分钟,在 Github Actions 上几乎需要 10 分钟。我绘制了 GCC 编译具有不同长度的 switch 语句的文件所需的时间:
正如您所看到的,它是非线性的,每增加 1000 个案例所花费的时间就会比最后 1000 个案例花费的时间更长。
有什么办法可以加快 GCC 编译这个 switch 语句的速度吗?是否有任何我可以插入到代码中的编译器提示,或任何要更改的设置(我一直在 -O0 中对此进行测试和计时)?像这样的 switch 语句,有很多稀疏的情况,会被编译成二叉树,所以我确实考虑过是否可以手动将其分成 1000-2000 个情况的块,但这实际上可能不会使编译更快;毕竟我只是手动执行编译器本身会执行的操作。(我还没有尝试过。)有什么想法吗?
如果相关的话,大多数案例都会失败:在 10898 个案例中,只有 637 个案例最终无条件突破。
编辑:Nate Eldredge 在评论中非常有帮助地指出这是 GCC 8.4 的回归。我现在已经在 GCC 错误跟踪器上报告了这一点。
编译结果-ftime-report -ftime-report-details
:
Time variable usr sys wall GGC
phase setup : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( …
Run Code Online (Sandbox Code Playgroud) rust ×3
javascript ×2
android ×1
app-bundle ×1
c ×1
compilation ×1
email ×1
es6-modules ×1
executable ×1
formatting ×1
gcc ×1
hashmap ×1
html ×1
ime ×1
jslint ×1
macos ×1
node.js ×1
optimization ×1
shebang ×1
spam ×1
typed-arrays ×1
vector ×1
verp ×1
wasm-bindgen ×1