Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 如何在node.js中解析自定义模块的绝对或相对文件路径?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在node.js中解析自定义模块的绝对或相对文件路径?

Javascript 如何在node.js中解析自定义模块的绝对或相对文件路径?,javascript,node.js,Javascript,Node.js,require似乎没有采用除。/parser1'以外的任何路径。我已经把两个js文件都放在桌面上了。我运行了节点my_parser.js,它总是抛出一个错误,对相对路径要求('parser1')或绝对路径要求('Desktop/parser1')说“找不到模块” 为什么它只使用require('./parser1'解析文件路径?它背后的配置是什么 请查找以下代码: // Require my new parser.js file. var Parser = require('./parser1

require
似乎没有采用除
。/parser1'
以外的任何路径。我已经把两个js文件都放在桌面上了。我运行了
节点my_parser.js
,它总是抛出一个错误,对相对路径要求('parser1')或绝对路径要求('Desktop/parser1')说“找不到模块”

为什么它只使用
require('./parser1'
解析文件路径?它背后的配置是什么

请查找以下代码:

 // Require my new parser.js file.
var Parser = require('./parser1');

var fs = require('fs');

// Read the contents of the file into memory.
fs.readFile('Desktop/example_log.txt', function (err, logData) {

// If an error occurred, throwing it will
  // display the exception and end our app.
  if (err) throw err;

// logData is a Buffer, convert to string.
  var text = logData.toString();

  // Create an instance of the Parser object.
  var parser = new Parser();

  console.log(parser.parse(text));
});
解析器1:

// Parser constructor.
var Parser = function() {

};

// Parses the specified text.
Parser.prototype.parse = function(text) {

var results = {};

// Break up the file into lines.
  var lines = text.split('\n');

lines.forEach(function(line) {
    var parts = line.split(' ');
    var letter = parts[1];
    var count = parseInt(parts[2]);

if(!results[letter]) {
      results[letter] = 0;
    }

results[letter] += parseInt(count);
  });

return results;
};

// Export the Parser constructor from this module.
module.exports = Parser;
require(..)
可与以下两种路径类型之一一起使用:

  • 相对于当前fle的路径
  • 已安装软件包的名称
相对路径: 相对路径以点+斜杠(
'./'
)开始,然后将所需文件的实际相对位置:
/path/to/your/module

已安装程序包名称
另一方面,如果您选择将require直接与包名一起使用,则eq.
require('express'))
,node查找保存已安装模块的特定文件夹:
node\u modules
。找到匹配的文件夹后,将导入该文件夹。如果所有包都不匹配,node将尝试在操作系统文件系统中查找上一级的另一个
node\u modules
文件夹。如果找不到任何内容,将引发您遇到的错误。

I我们的问题是因为,据我所知,您实际上没有使用.Node,它自己的模块加载器公开为
require()
。呃……我想您忘记了文件扩展名,即
require('./parser1.js'))
?@yuvi-nah,
节点
自动查找
.js | json |节点
。我投票结束这个问题,因为它回答得很清楚。@Mathletics哦,是的,等等,我想他只是误解了
/
引用相对路径的必要性(他可能认为,如果不是这样的话,它应该自动成为这样)