【问题标题】:Node module not recognize as module节点模块无法识别为模块
【发布时间】:2015-08-14 00:41:17
【问题描述】:

我有文件,我认为应该将其作为模块导入,但是当我尝试导入我的主文件(请参阅 main.js)时,我收到以下错误:

 Error: Cannot find module 'sessionStore.js'

我已确保文件位于正确的位置。任何想法还有什么可能导致这种情况?

main.js

var express = require('express');
var bodyParser = require('body-parser');
var util = require('util');
var toMarkdown = require('to-markdown');
var jsdiff = require('diff');
var marked = require('marked');
var pg = require('pg');
//need to get sessions to work and use server credentials instead of password
var sessionStore = require('sessionStore.js');
var PodioJS = require('podio-js').api;
var podio = new PodioJS({authType: 'password', clientId: "xxx", clientSecret: "xxx" },{sessionStore:sessionStore});

sessionStore.js

var fs = require('fs');
var path = require('path');

function get(authType, callback) {
  var fileName = path.join(__dirname, 'tmp/' + authType + '.json');
  var podioOAuth = fs.readFile(fileName, 'utf8', function(err, data) {

    // Throw error, unless it's file-not-found
    if (err && err.errno !== 2) {
        throw new Error('Reading from the sessionStore failed');
    } else if (data.length > 0) {
      callback(JSON.parse(data));
    } else {
      callback();
    }
  });
}

function set(podioOAuth, authType, callback) {
  var fileName = path.join(__dirname, 'tmp/' + authType + '.json');

  if (/server|client|password/.test(authType) === false) {
    throw new Error('Invalid authType');
  }

  fs.writeFile(fileName, JSON.stringify(podioOAuth), 'utf8', function(err) {
    if (err) {
      throw new Error('Writing in the sessionStore failed');
    }

    if (typeof callback === 'function') {
      callback();
    }
  });
}

module.exports = {
  get: get,
  set: set
};

【问题讨论】:

    标签: javascript node.js podio


    【解决方案1】:

    您是否尝试过使用相对路径?如果它们在同一个目录中,那么

    var sessionStore = require('./sessionStore');
    

    没有.js

    【讨论】:

    • 这就是修复,我不敢相信我没有抓住它!谢谢!
    【解决方案2】:

    您遇到的错误是因为节点在 node_modules 目录中找不到您的 sessionStore 模块。

    如果传递给 require() 的模块标识符不是本地模块,并且不以“/”、“../”或“./”开头,则节点从当前模块的父目录开始,并添加 /node_modules,并尝试从该位置加载模块。

    https://nodejs.org/api/modules.html#modules_file_modules

    您可能希望使用文件的相对路径。比如:require('./sessionStore')

    以“/”为前缀的模块是文件的绝对路径。例如,require('/home/marco/foo.js') 将加载 /home/marco/foo.js 中的文件。

    前缀为 './' 的模块是相对于调用 require() 的文件而言的。也就是circle.js必须和foo.js在同一个目录下才能被require('./circle')找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 2022-01-22
      • 2021-11-01
      • 2016-07-08
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多