Fix User-Agent version bug in Node #132
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
tl;dr: in Node, we were sending
User-Agent: Airtable.js/undefined
. This fixes that.This line "computes" the user agent:
This actually has two code paths:
process.env.npm_package_version
into the real package version. As far as I know, this bug never manifests itself in browsers.process.env.npm_package_version
is a value magically set by npm. However, when I tested this with a quick one-off script, that value wasundefined
. This explains the bug.There are a number of ways to fix this problem:
npm test
before releasing.process.env.npm_package_version
isn't being set and make sure it's set reliably. Documentation for these values is scant (it's unclear whether the value changes depending on the subpackage you're in or if it reflects the top-level package), and it didn't work even in my simple case, so I was inclined to steer clear of this.require('./package.json').version
. This works fine in Node, but increases the size of the browser build and includes unnecessary package info. (I've also had some issues requiringpackage.json
in the browser in the past, though I can't remember what they were.)require('./package.json').version
in Node andprocess.env.npm_package_version
in the browser. This is what I went with.npm test
passes after this change.