Deno 超级酷。我早上看到了,现在想迁移到 deno。我试图将我现有的 nodejs 脚本移动到 deno。任何人都可以帮助我了解如何在 deno.js 中使用 npm 模块。我需要 esprima 模块。这个有包https://github.com/denoland/deno_third_party/tree/master/node_modules但我不知道如何使用它。
我正在使用es6-module-transpiler,esprima和JSHint以及esnext: true选项.当我提出时,JSHint抱怨:
export default = { some: 'thing', other: 'thing' };
Run Code Online (Sandbox Code Playgroud)
但是esprima在我使用时抱怨
export default { some: 'thing', other: 'thing' };
Run Code Online (Sandbox Code Playgroud)
该规范说
export default AssignmentExpression ;
这让我觉得JSHint需要更新和esprima正确地轰炸,因为没有任务.有人可以成为我的决定者吗?
我有一个js承诺的模式,我想识别几个关键字
例如,如果我把代码放在:
var deferred = Q.defer();
Run Code Online (Sandbox Code Playgroud)
在文件中我还有以下各自的值
deferred.reject(err);
deferred.resolve();
return deferred.promise;
Run Code Online (Sandbox Code Playgroud)
完整的代码
例1
function writeError(errMessage) {
var deferred = Q.defer();
fs.writeFile("errors.log", errMessage, function (err) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve();
}
});
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
如果我把大型代码文件(作为字符串)发现此文件包含模式,我想要这样做
另一个例子
var d = Q.defer();/*或$ q.defer*/
在文件中,您还有以下各自的值
d.resolve(val);
d.reject(err);
return d.promise;
Run Code Online (Sandbox Code Playgroud)
完成例2
function getStuffDone(param) {
var d = Q.defer(); /* or $q.defer */
Promise(function(resolve, reject) {
// or = new $.Deferred() etc.
myPromiseFn(param+1)
.then(function(val) { /* or .done …Run Code Online (Sandbox Code Playgroud) 我目前正在根据我设计的新语言规范生成自定义 AST。这个自定义 AST 包含我设计的不同节点,其中包含我现在生成 JavaScript 代码所需的所有信息。例如:
假设我有一个 customExpressionNode,我希望将其转换为包含几个 if 条件的 JavaScript 函数。
我目前正在研究像 Babylon 和 Esprima 这样的库,用于从我的自定义 AST 生成新的 Javascript AST,但据我所知,这些库使用的 AST 非常复杂。我还想避免将 js 代码打印到几个文件中然后解析和编译它们,所以我的问题是:
有没有更好的方式以编程方式生成符合 JavaScript 的 AST,我可以用它来生成 JavaScript 代码?
javascript code-generation abstract-syntax-tree esprima babel-babylon
我正在使用伊斯坦布尔进行量角器测试的代码覆盖.
在检测源代码的过程中,我收到"无法解析,意外令牌"错误,并在完成错误后发现"导入"令牌正在创建问题.
一直在研究Angular2和Typescript.
我正在使用命令:istanbul instrument ./dir/to/instrument/ -o ./out/dir/
伊斯坦布尔默认使用esprima解析器在检测之前解析代码.这是一个解析错误,但我无法找到解决它的任何解决方案.
伊斯坦布尔:v0.4.5
Esprima解析器:v3.1.3
我用来escodegen在我的声明中添加结束代码,如下所示。在leave方法中,我.toArray()在语句末尾附加了一个调用。
const esprima = require('esprima');
const estraverse = require('estraverse');
const escodegen = require('escodegen');
const ast = esprima.parse('db.find()');
let finished = false;
estraverse.traverse(ast, {
leave: (node, parent) => {
if (node.type === esprima.Syntax.ExpressionStatement && !finished) {
finished = true;
let statement = escodegen.generate(node);
statement = `${statement.substring(0, statement.lastIndexOf(';'))}.toArray()`;
const findAst = esprima.parse(statement);
node.arguments = findAst.body[0].expression.arguments;
node.callee = findAst.body[0].expression.callee;
node.type = findAst.body[0].expression.type;
}
},
});
const generated = escodegen.generate(ast);
console.log('generated code:', generated);
Run Code Online (Sandbox Code Playgroud)
上述代码的输出是:generated code: (db.find().toArray())。我不明白为什么它在我的源代码上加上括号。我的源代码有什么问题吗?
我正在尝试用JavaScript开发一个抽象语法树程序.我正在使用Jet brains IDE进行开发.当我运行程序时,我得到错误无法找到模块esprima.nodejs设置是完美的,我不认为它有任何问题.请在下面找到代码段.在一篇文章中,我看到esprima模块存在于nodejs中.请帮忙.谢谢.
var esp = require('esprima');
Run Code Online (Sandbox Code Playgroud) esprima ×8
javascript ×6
node.js ×3
deno ×1
escodegen ×1
import ×1
istanbul ×1
jshint ×1
npm ×1
promise ×1
protractor ×1
regex ×1
typescript ×1