某文件用 browserify 编译总是报 ( 其他文件正常 ):
Error: Cannot find module '../../../../../../../.is-buffer_npminstall/is-buffer/
e-util-is\lib'
at C:\Users\Administrator\AppData\Roaming\npm\node_modules\.browserify_npmin
at load (C:\Users\Administrator\AppData\Roaming\npm\node_modules\.browserify
at onex (C:\Users\Administrator\AppData\Roaming\npm\node_modules\.browserify
at C:\Users\Administrator\AppData\Roaming\npm\node_modules\.browserify_npmin
at FSReqWrap.oncomplete (fs.js:117:15)
文件代码如下:
var request = require('request');
var crypto = require('crypto');
var config = require('./config.js');
function Message() {
this.appid = config.messageConfig.appid;
this.signtype = config.messageConfig.signtype;
this.appkey = config.messageConfig.appkey;
this.send = function(params) {
var api = 'https://api.submail.cn/message/send.json';
var requestParams = params;
requestParams['appid'] = this.appid;
var self = this;
request({
uri: 'https://api.submail.cn/service/timestamp.json',
method: 'GET'
}, function(error, response, body) {
var result = JSON.parse(body);
requestParams['timestamp'] = result["timestamp"];
requestParams['sign_type'] = self.signtype;
requestParams['signature'] = self.createSignature(requestParams);
request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
});
};
this.xsend = function(params) {
var api = 'https://api.submail.cn/message/xsend.json';
var requestParams = params;
requestParams['appid'] = this.appid;
var self = this;
request({
uri: 'https://api.submail.cn/service/timestamp.json',
method: 'GET'
}, function(error, response, body) {
var result = JSON.parse(body);
requestParams['timestamp'] = result["timestamp"];
requestParams['sign_type'] = self.signtype;
requestParams['signature'] = self.createSignature(requestParams);
request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
});
};
this.subscribe = function(params) {
var api = 'https://api.submail.cn/addressbook/message/subscribe.json';
var requestParams = params;
requestParams['appid'] = this.appid;
var self = this;
request({
uri: 'https://api.submail.cn/service/timestamp.json',
method: 'GET'
}, function(error, response, body) {
var result = JSON.parse(body);
requestParams['timestamp'] = result["timestamp"];
requestParams['sign_type'] = self.signtype;
requestParams['signature'] = self.createSignature(requestParams);
request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
});
};
this.unsubscribe = function(params) {
var api = 'https://api.submail.cn/addressbook/message/unsubscribe.json';
var requestParams = params;
requestParams['appid'] = this.appid;
var self = this;
request({
uri: 'https://api.submail.cn/service/timestamp.json',
method: 'GET'
}, function(error, response, body) {
var result = JSON.parse(body);
requestParams['timestamp'] = result["timestamp"];
requestParams['sign_type'] = self.signtype;
requestParams['signature'] = self.createSignature(requestParams);
request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
});
};
this.createSignature = function(params) {
if (this.signtype == 'normal') {
return this.appkey;
} else {
return this.buildSignature(params);
}
};
this.buildSignature = function(params) {
var sortedParams = this.sortOnKeys(params);
var signStr = "";
for(var key in sortedParams) {
signStr += key + '=' + sortedParams[key] + '&';
}
signStr = signStr.substring(0, signStr.length-1);
signStr = this.appid + this.appkey + signStr + this.appid + this.appkey;
if (this.signtype == 'md5') {
var md5sum = crypto.createHash('md5');
md5sum.update(signStr);
return md5sum.digest('hex');
}
if (this.signtype == 'sha1') {
var sha1sum = crypto.createHash('sha1');
sha1sum.update(signStr);
return sha1sum.digest('hex');
}
return '';
};
this.sortOnKeys = function(dict) {
var sorted = [];
for(var key in dict) {
if (key == 'attachments') {
continue;
}
sorted[sorted.length] = key;
}
sorted.sort();
var tempDict = {};
for(var i = 0; i < sorted.length; i++) {
tempDict[sorted[i]] = dict[sorted[i]];
}
return tempDict;
};
};
module.exports = Message;
感觉跟 crypto 这个库有关,你搜搜。