'"error TS2304: Cannot find name 'Long'" when compiling typescript with google api libraries
I just added "@google-cloud/logging-winston":"2.1.0", in my pacakge.json and when I compile I get the following errors. I have seen this with other google libraries occasionally, and its root cause is most likely deeper in the stack in automatic generated types from protobuf definitions.
../node_modules/@google-cloud/logging/build/proto/logging.d.ts:1434:32 - error TS2304: Cannot find name 'Long'.
1434 line?: (number|Long|null);
~~~~
../node_modules/@google-cloud/logging/build/proto/logging.d.ts:1453:38 - error TS2304: Cannot find name 'Long'.
1453 public line: (number|Long);
~~~~
../node_modules/@google-cloud/logging/build/proto/logging.d.ts:1543:39 - error TS2304: Cannot find name 'Long'.
1543 requestSize?: (number|Long|null);
~~~~
../node_modules/@google-cloud/logging/build/proto/logging.d.ts:1549:40 - error TS2304: Cannot find name 'Long'.
1549 responseSize?: (number|Long|null);
~~~~
../node_modules/@google-cloud/logging/build/proto/logging.d.ts:1576:42 - error TS2304: Cannot find name 'Long'.
1576 cacheFillBytes?: (number|Long|null);
Solution 1:[1]
Here is how I worked around this issue until it is taken care of.
- In your package.json dependencies section add
"long":"4.0.0", - In your package.json devDependencies section: add
"@types/long":"4.0.0", - Finally, in tsconfig.json (or in the tsc command line) add:
{
"compilerOptions": {
...
"types": [
...
"long"
],
...
}
Solution 2:[2]
I solved adding the long packet and @types/long, as gae123 suggested, but now the type is not to add in tsconfig.json but in tsconfig.app.json.
"compilerOptions": {
...
"types": [...,"long"]
}
Thanks gae123!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | gae123 |
| Solution 2 | Tyler2P |
