模块未在 NodeJS 中定义

Lew*_*ffa 8 javascript module node.js

我有一个包含 AJAX 功能的模块,我希望导出到我的客户端控制器,但我得到的模块未定义,我使用的是 NodeJS 和 Cloud9 环境。

AJAX 模块

module.exports = {
  appUrl: window.location.origin,
  ready: function(fn) {
    if(typeof fn !== 'function') {
        return;
    }

    if(document.readyState === 'complete') {
        return fn();
    }

    document.addEventListener('DOMContentLoaded', fn, false);
},
  ajaxRequest: function(method, url, callback) {
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {
        if(xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            callback(xmlhttp.response);
        }
    };

    xmlhttp.open(method, url, true);
    xmlhttp.send();
  }
};
Run Code Online (Sandbox Code Playgroud)

客户端控制器

'use strict';

 var ajaxFunctions = require("../common/ajax-functions.js");

 (function(){

   var profileId = document.querySelector('#profile-id') || null;
   var profileUsername = document.querySelector('#profile-username') || null;
   var profileRepos = document.querySelector('#profile-repos') || null;
   var displayName = document.querySelector('#display-name');
   var apiUrl = ajaxFunctions.appUrl + '/api/:id';

   function updateHtmlElement(data, element, userProperty) {
       element.innerHTML = data[userProperty];
   }

   ajaxFunctions.ready(ajaxFunctions.ajaxRequest('GET', apiUrl, function(data){
       var userObject = JSON.parse(data);

       updateHtmlElement(userObject, displayName, 'displayName');

       if(profileId !== null) {
           updateHtmlElement(userObject, profileId, 'id');
       }

       if(profileUsername !== null) {
           updateHtmlElement(userObject, profileUsername, 'username');
       }

       if(profileRepos !== null) {
           updateHtmlElement(userObject, profileRepos, 'publicRepos');
       }
   }));
})();
Run Code Online (Sandbox Code Playgroud)

Sch*_*aus 5

看起来您正在尝试在浏览器中运行代码,而您收到的错误表明module未定义。如果此代码打算在浏览器中运行,则必须首先使用 Webpack 或 Browserify 对其进行打包。