当前位置: 首页 > 面试题库 >

如何在DENO中使用npm模块?

邵弘伟
2023-03-14
问题内容

Deno超级酷。我早上看过它,现在想迁移到deno。我试图将现有的nodejs脚本移至deno。谁能帮助我使用deno中的npm模块。我需要esprima模块。这个有包https://github.com/denoland/deno_third_party/tree/master/node_modules,但是我不知道怎么使用。


问题答案:

Deno提供了一个节点兼容性库,该库将允许使用一些不使用未填充Node.js
API的
NPM软件包。您将可以require通过使用https://deno.land/std/node/module.ts

以下作品 deno 1.0.0

import { createRequire } from "https://deno.land/std/node/module.ts";

const require = createRequire(import.meta.url);
const esprima = require("esprima");

const program = 'const answer = 42';
console.log(esprima.tokenize(program))

上面的代码将使用esprimafrom node_modules/

要运行它,您需要--allow-read标记

deno run --allow-read esprima.js

您只能将其限制为 node_modules

deno run --allow-read=node_modules esprima.js

哪个输出:

[
 { type: "Keyword", value: "const" },
 { type: "Identifier", value: "answer" },
 { type: "Punctuator", value: "=" },
 { type: "Numeric", value: "42" }
]

注意 :所使用的许多API
std/仍然不稳定,因此您可能需要使用--unstableflag
运行它。

尽管由于整个项目已经使用TypeScript编写,并且没有使用任何依赖关系,但是对于他们来说,将其适应Deno还是很容易的。他们需要做的就是.ts在导入中使用扩展名。您也可以派生项目并进行更改。

// import { CommentHandler } from './comment-handler';
import { CommentHandler } from './comment-handler.ts';
// ...

完成后,您将可以执行以下操作:

// Ideally they would issue a tagged release and you'll use that instead of master
import esprima from 'https://raw.githubusercontent.com/jquery/esprima/master/src/esprima.ts';

const program = 'const answer = 42';
console.log(esprima.tokenize(program))


 类似资料:
  • 问题内容: 我已经从主页下载了nodejs的Windows Binary(.exe)。 如何安装和使用(Node Package Manager)? 问题答案: 可以从此处下载(无需安装): http://nodejs.org/dist/npm/ https://github.com/npm/npm/releases

  • 问题内容: 我正在尝试打字稿。在hello世界阶段它工作正常。我现在正在尝试使用npm模块: = 这不起作用: -> -> 看着打字稿文档和谷歌没有帮助。其他S /O问题未得到回答 元素: 打字稿1.8最新 是的,lodash已安装并存在于我的文件系统中(已选中) 我也做了 变种或不起作用 我试图调整tsconfig.json选择在其他的答案建议 ,并在一些答案建议,仍然无法正常工作 我们如何在打

  • 问题内容: 我最近在OSX上安装了Node.js和npm模块,我认为设置有问题: 问题答案: 如果要全局安装npm模块,请确保使用new 标志,例如: 从1.0rc开始有关npm模块安装的一般建议(摘自blog.nodejs.org): 如果要安装要在程序中使用的东西,请使用require(’whatever’),然后 将其本地安装 在项目的根目录下。 如果要在外壳程序中安装要使用的东西,在命令行

  • 对于那些比较复杂的样式/颜色转换, 使用不同的npm模块有时会是比自己造轮子更好的选择. Example 对于在CSS中的暗色梯度, 我们可以使用chroma-js这个模块 import chroma from 'chroma-js' const alpha = (color) => (a) => chroma(color).alpha(a).css(); const darken = alpha

  • 我已经使用基于web的编辑器创建了几个Lambda函数。到目前为止还不错。现在我想开始扩展那些模块(比如Q表示承诺)。我不知道如何将这些模块输出到Lambda,这样它们就可以被我的函数使用了。 我已经通读了这篇文章,但它似乎涉及到设置EC2并从那里运行Lambda函数。在创建函数时有一种上传zip的机制,但这似乎涉及到发送本地开发的函数。因为我在基于web的编辑器中工作,这似乎是一个奇怪的工作流程

  • 问题内容: 正如公知的,任何NPM模块可以通过运行一个简单的命令被安装:。 我已经安装了一些不再使用的模块,我只想把它们取下来。我对此有一些疑问: 我们是否有任何命令或过程可以从根目录卸载模块(例如),还是仅删除模块文件即可? 如果我们保留未使用的模块,它将对我们有何影响? 问题答案: 该命令很简单 Node.js文档https://npmjs.org/doc/具有npm所需的所有命令。 本地安装