首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点模块不能识别为模块

节点模块不能识别为模块
EN

Stack Overflow用户
提问于 2015-08-14 00:41:17
回答 2查看 635关注 0票数 0

我有一个文件,我认为它应该作为一个模块导入,但是当我试图导入我的主文件(请参阅main.js)时,我会得到以下错误:

代码语言:javascript
复制
 Error: Cannot find module 'sessionStore.js'

我确保文件在正确的位置。还有什么能导致这件事的?

main.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-14 00:43:44

你试过使用相对路径吗?如果它们在同一个目录中,那么

代码语言:javascript
复制
var sessionStore = require('./sessionStore');

没有.js

票数 3
EN

Stack Overflow用户

发布于 2015-08-14 01:00:33

您所得到的错误是因为节点无法在sessionStore目录中找到您的node_modules模块。

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

modules

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

以'/‘为前缀的模块是文件的绝对路径。例如,require(' /home/marco/foo.js ')将在/home/marco/foo.js加载文件。 一个以'./‘为前缀的模块相对于文件调用require()。也就是说,circle.js必须在与foo.js相同的目录中才能找到它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32000664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档