How to solve this error when getting html using node-horseman? - node.js

I use module node-horseman to run PhantomJS from Node. I would like to get html from github login page. This is my code.
var Horseman = require('node-horseman');
var horseman = new Horseman();
horseman
.open('https://github.com/login')
.html()
.log()
.close();
But I get the error.
Unhandled rejection eval#[native code]
evaluatePage
global code
evaluateJavaScript#[native code]
evaluate#phantomjs://platform/webpage.js:390:39
phantomjs://code/bridge.js:121:61
at /Users/larry/Desktop/repos/getFollower/node_modules/node-horseman/lib/actions.js:989:36
at tryCatcher (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/util.js:16:23)
at Function.Promise.fromNode.Promise.fromCallback (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/promise.js:178:30)
at Horseman.<anonymous> (/Users/larry/Desktop/repos/getFollower/node_modules/node-horseman/lib/actions.js:987:29)
at Horseman.tryCatcher (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/promise.js:504:31)
at Promise._settlePromise (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/promise.js:561:18)
at Promise._settlePromiseCtx (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/promise.js:598:10)
at Async._drainQueue (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/async.js:143:12)
at Async._drainQueues (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/async.js:148:10)
at Immediate.Async.drainQueues [as _onImmediate] (/Users/larry/Desktop/repos/getFollower/node_modules/bluebird/js/release/async.js:17:14)
at tryOnImmediate (timers.js:543:15)
at processImmediate [as _immediateCallback] (timers.js:523:5)
I read the readme but I can't find where the error is. I guess there may be some other problems. Does anyone know how to solve it?

Related

Node app not sending any data while login 'ER_NO_DEFAULT_FOR_FIELD',

I am transferring a node app from one server to another using different domain name.
I have setup everything but I cannot login to the control panel of the app which I have created, I am getting the following error.
{ Error: ER_NO_DEFAULT_FOR_FIELD: Field 'origin' doesn't have a default value
at Query.Sequence._packetToError (/var/www/node/node_modules/mysql/lib/pro tocol/sequences/Sequence.js:47:14)
at Query.ErrorPacket (/var/www/node/node_modules/mysql/lib/protocol/sequen ces/Query.js:77:18)
at Protocol._parsePacket (/var/www/node/node_modules/mysql/lib/protocol/Pr otocol.js:278:23)
at Parser.write (/var/www/node/node_modules/mysql/lib/protocol/Parser.js:7 6:12)
at Protocol.write (/var/www/node/node_modules/mysql/lib/protocol/Protocol. js:38:16)
at Socket.<anonymous> (/var/www/node/node_modules/mysql/lib/Connection.js: 91:28)
at Socket.<anonymous> (/var/www/node/node_modules/mysql/lib/Connection.js: 502:10)
at Socket.emit (events.js:189:13)
at Socket.EventEmitter.emit (domain.js:441:20)
at addChunk (_stream_readable.js:284:12)
at readableAddChunk (_stream_readable.js:265:11)
at Socket.Readable.push (_stream_readable.js:220:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
--------------------
at Protocol._enqueue (/var/www/node/anode_modules/mysql/lib/protocol/Protoc ol.js:144:48)
at Connection.query (/var/www/node/node_modules/mysql/lib/Connection.js:20 0:25)
at Object.managerLogin (/var/www/node/node_modules/login/index.js:58:15)
at callbackFunction (/var/www/node/routes/index.js:62:16)
at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/ layer.js:95:5)
at next (/var/www/node/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/var/www/node/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/ layer.js:95:5)
at /var/www/node/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/var/www/node/node_modules/express/lib/router/index.js: 330:12)
at next (/var/www/node/node_modules/express/lib/router/index.js:271:10)
at /var/www/node/app.js:55:7
at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/ layer.js:95:5)
at trim_prefix (/var/www/node/node_modules/express/lib/router/index.js:312:13)
at /var/www/node/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/var/www/node/node_modules/express/lib/router/index.js: 330:12)
code: 'ER_NO_DEFAULT_FOR_FIELD',
errno: 1364,
sqlMessage: 'Field \'origin\' doesn\'t have a default value',
sqlState: 'HY000',
index: 0,
sql:
'INSERT INTO userLog SET userId = 2, token = \'9d99a1a0-7350-11e9-9671-95abec1f75f6\', ip = \'\', browser = \'\', isLog = \'y\', isValid = \'y\'' }
Cannot figure this out what is happening,app was running file in the old server.
Debugged it, found it's a mysql bug, edited etc/mysql/my.cnf with [mysqld]
port = 3306
sql-mode=""
reloaded mysql, and it worked for me!

httpsProxyAgent is not defined

I am integrating linkedin authentication with my node.js by passport-linkedin.
It works fine initially. I am redirected to login/signup page. User is entering their details but then when it is coming to authentication I get the error
InternalOAuthError: Failed to obtain access token
at Strategy.OAuth2Strategy._createOAuthError (C:\Users\SU40006113\Desktop\second\node_modules\passport-oauth2\lib\strategy.js:379:17)
at C:\Users\SU40006113\Desktop\second\node_modules\passport-oauth2\lib\strategy.js:166:45
at C:\Users\SU40006113\Desktop\second\node_modules\oauth\lib\oauth2.js:199:18
at ClientRequest.<anonymous> (C:\Users\SU40006113\Desktop\second\node_modules\oauth\lib\oauth2.js:170:5)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
I checked on stack overflow and got to know that it is because of corporate proxy. I added
var HttpsProxyAgent = require('https-proxy-agent');
if (process.env['https_proxy']) {
httpsProxyAgent = new HttpsProxyAgent(process.env['https_proxy']);
}
and
options.agent = httpsProxyAgent;
in oauth2.js. But now I am getting this error
ReferenceError: httpsProxyAgent is not defined
at exports.OAuth2._request (C:\Users\SU40006113\Desktop\second\node_modules\oauth\lib\oauth2.js:126:19)
at exports.OAuth2.getOAuthAccessToken (C:\Users\SU40006113\Desktop\second\node_modules\oauth\lib\oauth2.js:197:8)
at loaded (C:\Users\SU40006113\Desktop\second\node_modules\passport-oauth2\lib\strategy.js:164:20)
at NullStore.verify (C:\Users\SU40006113\Desktop\second\node_modules\passport-oauth2\lib\state\null.js:9:3)
at Strategy.OAuth2Strategy.authenticate (C:\Users\SU40006113\Desktop\second\node_modules\passport-oauth2\lib\strategy.js:210:26)
at attempt (C:\Users\SU40006113\Desktop\second\node_modules\passport\lib\middleware\authenticate.js:361:16)
at authenticate (C:\Users\SU40006113\Desktop\second\node_modules\passport\lib\middleware\authenticate.js:362:7)
at Layer.handle [as handle_request] (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\index.js:275:10)
at Function.handle (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\index.js:174:3)
at router (C:\Users\SU40006113\Desktop\second\node_modules\express\lib\router\index.js:47:12)
I have installed https-proxy-agent.
What's causing the error?

node- Some file references are missing in stack trace with async/await

Stacktrace is not having the reference to actual file name from where the error is triggered for the protractor.
Spec reporter configuration:
jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true,}}));
Sample spec:
it('Protractor stacktrce issue', async () =>
{
const helper = new SearchHelper();
await helper.doSearch('test');
});
search-helper.ts:
async doSearch(text) {
await browser.get('http://google.com');
await browser.wait(EC.visibilityOf(element(by.name('q1'))), 10000, 'No Element found');
await element(by.name('q1')).click(); //invalid locator
}
1. Stack Trace with browser.wait
✗ Protractor stack trace issue
-Failed: No Element found Wait timed out after 10007ms
Wait timed out after 10007ms
at WebDriverError (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:5)
at TimeoutError (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:238:5)
at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2107:17
at process._tickCallback (internal/process/next_tick.js:109:7)
From asynchronous test: Error at Suite.<anonymous> (/Users/e2e/sample-spec.ts:27:3)
at Object.<anonymous> (/Users/e2e/sample-spec.ts:15:1)
at Module._compile (module.js:570:32) at Module.m._compile (/Users/node_modules/ts-node/src/index.ts:392:23)
at Module._extensions..js (module.js:579:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/node_modules/ts-node/src/index.ts:395:12)
2. If we comment browser.wait statement then the stacktrace is
✗ Protractor stack trace issue
Failed: No element found using locator: By(css selector, *[name="q1"])
at WebDriverError (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:5)
at NoSuchElementError (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:168:5)
at elementArrayFinder.getWebElements.then (/usr/local/lib/node_modules/protractor/lib/element.ts:851:17)
at process._tickCallback (internal/process/next_tick.js:109:7)Error
at ElementArrayFinder.applyAction_ (/usr/local/lib/node_modules/protractor/lib/element.ts:482:23)
at ElementArrayFinder.(anonymous function) [as click] (/usr/local/lib/node_modules/protractor/lib/element.ts:96:21)
at ElementFinder.(anonymous function) [as click] (/usr/local/lib/node_modules/protractor/lib/element.ts:873:14)
at SearchHelper.<anonymous> (/Users/e2e/search-helper.ts:14:34) **at step (/Users/e2e/search-helper.ts:32:23)
at Object.next (/Users/e2e/search-heper.ts:13:53)
at fulfilled (/Users/e2e/search-helper.ts:4:58)**
at process._tickCallback (internal/process/next_tick.js:109:7)
From asynchronous test: Error at Suite.<anonymous> (/Users/e2e/sample-spec.ts:27:3)
at Object.<anonymous> (/Users/e2e/sample-spec.ts:15:1) at Module._compile (module.js:570:32)
at Module.m._compile (/Users/node_modules/ts-node/src/index.ts:392:23)
at Module._extensions..js (module.js:579:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/node_modules/ts-node/src/index.ts:395:12)
Observe the 2nd stack trace, it has references to search-helper file but it's not there in the first stack trace. It's very important to have this reference in stack trace for debugging.

Create Task in Asana Node.js

Using the below in Node trying to create a task within Workspace. I have omitted the AccessToken & WorkspaceID numbers. Suspect I'm doing something really dumb :)
var asana = require('asana');
var client = asana.Client.create().useAccessToken('0/XXXXXXXX');
var newTask = { name: "Your Mission" };
client.tasks.createInWorkspace(1111111111, newTask).then(function(response) {
tasks = response.data;
console.log(tasks);
});
At runtime I get the following output...
Unhandled rejection Error: Invalid Request
at InvalidRequest.AsanaError (/Users/D/Asana_Crons/node_modules/asana/lib/errors/error.js:4:11)
at new InvalidRequest (/Users/D/Asana_Crons/node_modules/asana/lib/errors/invalid_request.js:5:14)
at Request._callback (/Users/D/Asana_Crons/node_modules/asana/lib/dispatcher.js:152:23)
at Request.self.callback (/Users/D/Asana_Crons/node_modules/request/request.js:186:22)
at emitTwo (events.js:125:13)
at Request.emit (events.js:213:7)
at Request.<anonymous> (/Users/D/Asana_Crons/node_modules/request/request.js:1163:10)
at emitOne (events.js:115:13)
at Request.emit (events.js:210:7)
at IncomingMessage.<anonymous> (/Users/D/Asana_Crons/node_modules/request/request.js:1085:12)
at Object.onceWrapper (events.js:314:30)
at emitNone (events.js:110:20)
at IncomingMessage.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1047:12)
at _combinedTickCallback (internal/process/next_tick.js:102:11)
at process._tickCallback (internal/process/next_tick.js:161:9)
The only issue I can see with your code is that the workspace id needs to be a string, not an integer. This is documented in the tasks section of /gen folder in the Asana Node client library.

Cassandra Sails model.count() Works but model.find() and model.findOne() Not Working

I have a Data model in Sails using the sails-cassandra connection system. Data. Data.count({...}).exec() returns 1, but Data.find({...}).exec() or Data.findOne({...}).exec() return the following error message:
Error (E_UNKNOWN) :: Encountered an unexpected error
ResponseError: Undefined name folder in selection clause
at FrameReader.readError (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/readers.js:276:13)
at Parser.parseError (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/streams.js:187:45)
at Parser.parseBody (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/streams.js:169:19)
at Parser._transform (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/streams.js:103:10)
at Parser.Transform._read (_stream_transform.js:179:10)
at Parser.Transform._write (_stream_transform.js:167:12)
at doWrite (_stream_writable.js:301:12)
at writeOrBuffer (_stream_writable.js:288:5)
at Parser.Writable.write (_stream_writable.js:217:11)
at Protocol.ondata (_stream_readable.js:540:20)
at Protocol.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Protocol.Readable.push (_stream_readable.js:126:10)
at Protocol.Transform.push (_stream_transform.js:140:32)
at Protocol.transformChunk (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/streams.js:75:8)
at Protocol._transform (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/streams.js:26:10)
at Protocol.Transform._read (_stream_transform.js:179:10)
at Protocol.Transform._write (_stream_transform.js:167:12)
at doWrite (_stream_writable.js:301:12)
at writeOrBuffer (_stream_writable.js:288:5)
at Protocol.Writable.write (_stream_writable.js:217:11)
at Socket.ondata (_stream_readable.js:540:20)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)
(event loop)
at RequestHandler.send (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/request-handler.js:128:11)
at Client._getPrepared (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/client.js:581:11)
at /Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/cassandra-driver/lib/client.js:399:12
at fn (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/async/lib/async.js:638:34)
at Immediate._onImmediate (/Users/samuel/Apps/dataapp/node_modules/sails-cassandra/node_modules/async/lib/async.js:554:34)
at processImmediate [as _immediateCallback] (timers.js:367:17)
This is probably an issue with the construction of the returned attributes since count() does not return any of the attributes, where as find() and findOne() do.
I would look at the attributes on your models. Add and remove each one till you find the offender.

Resources