我有这个模块,包含我想要导出到我的客户端控制器的AJAX功能,但是我没有定义Module,我正在使用NodeJS和Cloud9环境。
AJAX模块
package com.test;
public class MyTest
{
public static void main(String[] args)
{
System.out.println("test fle");
}
}
客户端控制器
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();
}
};
答案 0 :(得分:0)
您似乎正在尝试在浏览器中运行代码,而您遇到的错误是说module
未定义。如果要在浏览器中运行此代码,则必须先将其与Webpack或Browserify打包在一起。
答案 1 :(得分:0)
Node没有自己的XmlHttpRequest
,这是我们在网络/浏览器世界中理所当然的。这可能是您的AJAX模块中出错的原因。它试图引用一个不存在的变量(XmlHttpRequest
),因为它不存在,所以文件会出错。
您可以通过引入您自己的XmlHttpRequest
来解决此问题,例如:
https://github.com/driverdan/node-XMLHttpRequest。要做到这一点,只需运行:
npm i --save node-XMLHttpRequest
但是,我建议改为引入fetch
。 fetch
是一种新的,非常酷的非jQuery,但仍然是制作AJAX请求的简单方法,并且它得到了大多数浏览器的支持(http://caniuse.com/#search=fetch)。与XmlHttpRequest
一样,Node没有自己的fetch
版本,但您可以轻松添加它:
npm i --save whatwg-fetch
使用fetch
的好处是你可以减少对轮子的重新发明"与XmlHttpRequest
做对比。您可以在此处详细了解fetch
:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API