I’ve encountered a weird behavior of the /rest/api/2/search
in my Forge application.
Here is an example code:
import Resolver from '@forge/resolver'
import { asUser } from '@forge/api'
const resolver = new Resolver()
resolver.define('loadMarkersForIssues', async (request) => {
const { payload, context: { extensionContext } } = request
const queryParams = [
`jql=${encodeURIComponent(payload.jql)}`
]
console.log(queryParams)
const searchResponse = await asUser().requestJira(`/rest/api/2/search?${queryParams.join('&')}`)
if (searchResponse.ok) {
const json = await searchResponse.json()
// do something with the data
return new Promise(resolve => {
resolve({data: '...'})
})
} else {
return new Promise((resolve, reject) => {
reject("bad query string...")
})
}
})
Here is sample output for two executions: valid JQL and some invalid characters:
invocation: d2e568d0926c6ca7 map-project.handler
INFO 14:53:47.287 d2e568d0926c6ca7 [ 'jql=assignee%20%3D%20currentUser()' ]
invocation: 524d407da3e45988 map-project.handler
INFO 14:54:24.153 524d407da3e45988 [ 'jql=asdf%20asdf%20asdf%20asdf%20asdf' ]
ERROR 14:54:24.331 524d407da3e45988 TypeError: Cannot read property 'match' of undefined
at Object.transformScriptError [as default] (/tunnel/node_modules/@forge/runtime/out/sandbox/transform-script-error.js:14:21)
at /tunnel/node_modules/@forge/runtime/out/sandbox-isolate/index.js:151:57
at async IsolateSandbox.execute (/tunnel/node_modules/@forge/runtime/out/sandbox-isolate/index.js:41:23)
at async LocalInvocationService.invoke (/tunnel/node_modules/@forge/tunnel/out/tunnelling/services/local-invocation-service.js:46:26)
at async LocalDevelopmentServer.handleInvocation (/tunnel/node_modules/@forge/tunnel/out/tunnelling/servers/dev-server.js:23:30)
As you can see, I am not touching searchResponse.json()
if searchResponse.ok
is false
(see reference here: Problems with Rest API Commenting with attachments - #11 by kchan)
package.json:
"dependencies": {
"@forge/api": "^1.1.0",
"@forge/resolver": "^1.1.2"
},
@forge/cli
updated to the latest version 1.3.2