我正在尝试在我的 Ubuntu 机器上安装 Deno,但我不能。Ubuntu 版本是 18.04。
我正在使用这个命令:
curl -fsSL https://deno.land/x/install/install.sh | sh
Run Code Online (Sandbox Code Playgroud)
它由 Deno 的官方页面提供。安装 Deno 后,我在.bash_profile.
export DENO_INSTALL="/home/azmul/.local"
export PATH="$DENO_INSTALL/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
执行此操作后,当我尝试在终端上运行deno命令时。我总是发现 在我的终端上找不到“deno”。我不知道我该怎么办。如果有人对此有好的声音,请给我一个答案。
我正在使用 Deno 学习 Typescript,并希望看到 JavaScript 结果。是否有一些我在文档中没有看到的命令行?
ps.:我知道使用 Deno 没有编译步骤,但在某些时候它必须有 Javascript 代码,以便 V8 引擎可以运行它。
sh: 39: unzip: not found我在 Windows Subsystem For Linux(WSL) 上安装 Deno 时收到以下错误。
我使用 Chocolatey 在 Windows 10 上安装了 Deno 1.0.5。我尝试在 Deno REPL 中使用 Typescript,但显然如果设置了类型,它就无法识别 TypeScript 变量声明:
C:\>deno
Deno 1.0.5
exit using ctrl+d or close()
> let x: number;
Uncaught SyntaxError: Unexpected token ':'
at evaluate ($deno$/repl.ts:54:34)
at Object.replLoop ($deno$/repl.ts:156:13)
> let x: number = 42;
Uncaught SyntaxError: Unexpected token ':'
at evaluate ($deno$/repl.ts:54:34)
at Object.replLoop ($deno$/repl.ts:156:13)
> let x = 42;
undefined
> x
42
Run Code Online (Sandbox Code Playgroud)
我需要做一些特别的事情来让 Deno CLI 支持 TypeScript 吗?
我在学习 Deno 和 Oak 方面取得了缓慢但稳定的进展,但这让我感到困惑。我有一个带有文件上传字段的简单网络表单:
<form method="post" action="/quote" enctype="multipart/form-data">
<label>Author:
<input type="text" name="author" />
</label>
<label>file: <input type="file" name="myfile" multiple />
</label>
<label>Quote:
<textarea name="quote"></textarea>
</label>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
处理是通过 Deno 和 Oak 完成的,下面是处理文本数据的脚本:
router.post('/quote', async context => {
const body = context.request.body({ type: 'form' })
const value = await body.value
const author = value.get('author')
console.log(author)
context.response.redirect(`/?author=${author}`)
})
Run Code Online (Sandbox Code Playgroud)
该路由可以处理没有编码的表单multipart/form-data,但一旦我添加该编码,该author字段就是undefined。
我的问题是:如何访问此表单中的数据(文本和文件数据)?
据我所知,只有在使用包含所有导入的 TypeScript(或 JavaScript)文件时,才能创建 Deno 锁定文件——通常来自deps.ts文件。
我希望能够使用(不稳定的)导入映射并基于它生成锁定文件。
是否可以从import_map.json文件生成该锁定文件?如果不可能,有没有其他方法可以使用deps.ts文件,例如,能够映射依赖项以便导入它们而无需在./..任何地方使用(臭名昭著的)?
此外,看起来paths在tsconfig.json文件上使用该功能是行不通的,因为我不知道如何引用其中的任何模块。
Deno 是否有办法填充/填充 Node.js 模块?
也就是说,假设我有一个属于 Node.js 项目一部分的打字稿文件,它看起来像这样
import { performance } from 'perf_hooks';
function hello() {
console.log(performance.performance.timeOrigin)
console.log("Hello World")
}
export {
hello
}
Run Code Online (Sandbox Code Playgroud)
我想在 deno 程序中使用这个模块,所以我做了这样的事情
import {hello} from './some-module.ts'
function main() {
hello()
}
Run Code Online (Sandbox Code Playgroud)
但是,我不能这样做,因为 Deno 中没有perf_hooks模块。
% deno run main.ts
Check file:///private/tmp/main.ts
error: TS2305 [ERROR]: Module '"deno:///none.d.ts"' has no exported member 'performance'.
import { performance } from 'perf_hooks';
~~~~~~~~~~~
at file:///private/tmp/some-module.ts:1:10
Run Code Online (Sandbox Code Playgroud)
我想编写我自己的版本perf_hooks来实现我需要的属性和方法,然后告诉 Deno Hey - 每当有人想要perf_hook使用我的模块时。
Deno 有内置的东西可以让我做到这一点吗?如果没有,Deno 社区是否使用一些常见的实践/捆绑技术来完成此类事情。
我想创建一个像这样的 Web Worker:
const blob = URL.createObjectURL(new Blob([`
...
`], {type: 'text/javascript'}))
const worker = new Worker(blob)
Run Code Online (Sandbox Code Playgroud)
但在 Deno 中这样做时我得到:
error: Uncaught NotSupported: Classic workers are not supported.
const worker = new Worker(blob)
^
Run Code Online (Sandbox Code Playgroud)
我在谷歌上搜索了这条消息“不支持经典工人”,我发现基本上没有任何解释其背后的历史或具体含义的内容。我发现了一些关于创建工人的特殊 Deno 方式:
error: Uncaught NotSupported: Classic workers are not supported.
const worker = new Worker(blob)
^
Run Code Online (Sandbox Code Playgroud)
但它似乎不能满足我的需求,因为我特别需要从字符串(或至少从运行时传递的任意函数)动态初始化工作程序。
有什么办法可以在 Deno 中完成我需要做的事情吗?
编辑:我确实设法在文档中找到了此页面(由于某种原因,Deno 的文档在搜索引擎中无法找到结果),尽管这不是一个好兆头,因为听起来没有办法做我需要的事情执行 https://deno.land/manual/runtime/web_platform_apis#web-worker-api
当我在 MacOS 终端中运行时,code .它会在当前文件夹中打开 VSCode。
但是,当我运行deno run --allow-run file.tsfile.ts 如下时,什么也没有发生:
Deno.run({ cmd: ["code", "."] });
Run Code Online (Sandbox Code Playgroud)
我查看了 Deno.run 文档,但找不到任何关于为什么这不起作用的信息。
我运行过的测试:
Deno.run({ cmd: ["which", "code"] });输出/usr/local/bin/code(与终端相同)。Deno.run({ cmd: ["type", "code"] });什么也不输出。终端输出code is /usr/local/bin/code!我如何开始弄清楚为什么有些命令有效(which)而其他命令无效(code和type)?
使用 deno vscode 扩展可以很好地运行测试,但似乎没有调试测试的选项。
请注意,我可以在 vscode 中调试 deno 代码,没有问题。这是调试测试的问题。
deno ×10
javascript ×4
typescript ×3
forms ×1
oak ×1
polyfills ×1
polymorphism ×1
ubuntu ×1
ubuntu-18.04 ×1
upload ×1
windows-subsystem-for-linux ×1
worker ×1