Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;require.resolve不是一个函数;在巴别塔节点评估模式下_Javascript_Node.js_Vim_Babeljs - Fatal编程技术网

Javascript &引用;require.resolve不是一个函数;在巴别塔节点评估模式下

Javascript &引用;require.resolve不是一个函数;在巴别塔节点评估模式下,javascript,node.js,vim,babeljs,Javascript,Node.js,Vim,Babeljs,我正在尝试编写一个Vim命令,以遵循js/ES6文件中的require/import引用(关于模块解析器别名) 如果我键入babel node并进入REPL模式,我可以执行以下操作: > require.resolve('~'); /properly/resolved/path 但是,如果我尝试求值相同的表达式(我需要求值以在运行时指定Vim的路径),我会得到: $babel节点-e'console.log(require.resolve(“~”)) [评估]:1 console.log

我正在尝试编写一个Vim命令,以遵循js/ES6文件中的require/import引用(关于模块解析器别名)

如果我键入
babel node
并进入REPL模式,我可以执行以下操作:

> require.resolve('~');
/properly/resolved/path
但是,如果我尝试求值相同的表达式(我需要求值以在运行时指定Vim的路径),我会得到:

$babel节点-e'console.log(require.resolve(“~”))
[评估]:1
console.log(require.resolve(“./lib/webapp/lib”);
^
TypeError:require.resolve不是函数
在[评估]:1:-41
在ContextifyScript.Script.runInThisContext(vm.js:23:33)
在Object.runInThisContext(vm.js:95:38)
在评估时(/usr/local/lib/node\u modules/babel cli/lib/\u babel-node.js:99:23)
反对。(/usr/local/lib/node_modules/babel cli/lib/_babel-node.js:119:16)
在模块处编译(模块js:571:32)
在Object.Module.\u extensions..js(Module.js:580:10)
在Module.load(Module.js:488:32)
在tryModuleLoad时(module.js:447:12)
在Function.Module.\u加载(Module.js:439:3)
看起来tilde已正确解析(
~
指向
/lib/webapp/lib
),但随后被插入到命令中,babel尝试在它之后执行函数(由于某种原因找不到它)


我做错什么了吗?这是一个bug吗?

我用一个临时文件和一些相当讨厌的脚本解决了这个问题:

" Follow JavaScript references with proper babel (and module-resolver)
" resolution (required a git repo in the project's root)
function FollowJsReference()
  " Find the reference and yank it into the r register
  exec "normal ^f'\"ryi'"
  " Create a file at the root with the code for babel-node to resolve the
  " reference. Ideally, I'd do this with babel-node's eval, but it errors out.
  " Instead, I create a script, evaluate it then delete it.
  let s:script_content = 'console.log(require.resolve("' . @r . '"));'
  let s:create_command = 'tee `git rev-parse --show-toplevel`/___resolve.js'
  call system(s:create_command, s:script_content)
  " Run babel-node from the root dir
  let s:babel_command = 'cd `git rev-parse --show-toplevel` && babel-node ./___resolve.js'
  let s:out = system(s:babel_command)
  exec ":edit " . s:out
  " Clean up
  let s:delete_command = 'rm `git rev-parse --show-toplevel`/___resolve.js'
  call system(s:delete_command)
endfunction
nnoremap <Leader>gj :call FollowJsReference()<CR>
“使用适当的babel(和模块解析器)跟踪JavaScript引用”
“解决方案(需要项目根目录中的git回购协议)
函数FollowJsReference()
“找到引用并将其拉入r寄存器
执行“正常^f'\“ryi”
“使用babel节点的代码在根目录下创建一个文件,以解析
“参考。理想情况下,我会使用babel节点的eval来执行此操作,但它会出错。
“相反,我创建了一个脚本,对它求值,然后删除它。
让我们:script_content='console.log(require.resolve(“.@r.”)”;'
让我们:create_command='tee`git rev parse--show top level`/\uuuu resolve.js'
调用系统(s:create_命令,s:script_内容)
“从根目录运行babel节点
让我们使用:babel_命令='cd`git rev parse--show toplevel`&&babel node./\uuu_resolve.js'
设s:out=system(s:babel_命令)
exec“:编辑”。s:出去
“清理
让我们:delete_命令='rm`git rev parse--show top level`/\uuu resolve.js'
呼叫系统(s:delete_命令)
端功能
nnoremap gj:调用FollowJsReference()

我不确定Vim在这个问题中的位置。删除了标记。添加了Vim标记,因为解决方法是纯Vim
" Follow JavaScript references with proper babel (and module-resolver)
" resolution (required a git repo in the project's root)
function FollowJsReference()
  " Find the reference and yank it into the r register
  exec "normal ^f'\"ryi'"
  " Create a file at the root with the code for babel-node to resolve the
  " reference. Ideally, I'd do this with babel-node's eval, but it errors out.
  " Instead, I create a script, evaluate it then delete it.
  let s:script_content = 'console.log(require.resolve("' . @r . '"));'
  let s:create_command = 'tee `git rev-parse --show-toplevel`/___resolve.js'
  call system(s:create_command, s:script_content)
  " Run babel-node from the root dir
  let s:babel_command = 'cd `git rev-parse --show-toplevel` && babel-node ./___resolve.js'
  let s:out = system(s:babel_command)
  exec ":edit " . s:out
  " Clean up
  let s:delete_command = 'rm `git rev-parse --show-toplevel`/___resolve.js'
  call system(s:delete_command)
endfunction
nnoremap <Leader>gj :call FollowJsReference()<CR>