Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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 “Cleaning package.json”;“主要”;需要时使用_Javascript_Node.js_Path_Require_Package.json - Fatal编程技术网

Javascript “Cleaning package.json”;“主要”;需要时使用

Javascript “Cleaning package.json”;“主要”;需要时使用,javascript,node.js,path,require,package.json,Javascript,Node.js,Path,Require,Package.json,我希望保持路径的相对性,并且总是在它前面加上前导目录 假设我有一个字符串hello。参考/hello.js在您的包.main中包含hello是非常有效的。但是,如果您使用hello并需要它,它将查找hellonode\u模块,而不是文件。如何使用path将/作为hello的前缀?问题是package.jsonmain可以有这些有效选项。我不是说这些都指向相同的文件。我是说,hello.js和hello不能直接放入require 。/hello.js /hello.js hello.js 。/h

我希望保持路径的相对性,并且总是在它前面加上前导目录

假设我有一个字符串
hello
。参考
/hello.js
在您的
包.main
中包含
hello
是非常有效的。但是,如果您使用
hello
并需要它,它将查找
hello
node\u模块,而不是文件。如何使用path将
/
作为
hello
的前缀?问题是package.json
main
可以有这些有效选项。我不是说这些都指向相同的文件。我是说,
hello.js
hello
不能直接放入
require

  • 。/hello.js
  • /hello.js
  • hello.js
  • 。/hello
  • /hello
  • hello
我怎样才能清理所有这些路径,使它们与需要一起工作

path.join
去掉前导路径,因此这不起作用<代码>路径。另一方面,resolve(解析)可以清除所有这些路径,以便与require一起使用,但它会使其成为绝对路径

预期行为:

  • 。/hello.js
    ->相同
  • /hello.js
    ->相同
  • hello.js
    ->
    /hello.js
  • 。/hello
    ->相同
  • /hello
    ->相同
  • hello
    ->
    /hello
我应该创建一个正则表达式来查看路径吗?我如何确保它能够跨平台工作

var pkg = require('./package.json')
// var mainPackage = cleanMain(pkg.main)
// var main = require(mainPackage)

节点中的Require路径仅使用前斜杠
/
,即使在Windows上也是如此,这样就消除了一点复杂性。除此之外,它在
node\u modules
中查找和查找路径之间的区别在于它是以
还是
/
开头。()clean函数可以是一个简单的正则表达式测试,如下所示:

function clean(s) {
  if (!/^[\.\/]/.test(s)) {
    s = './' + s;
  }
  return s;
}

这是有道理的!谢谢