payjp / payjp-node

PAY.JP server-side JavaScript & Typescirpt SDK :tada: (Note. will remove npm beta tag) Tutorial:
https://pay.jp/docs/started
MIT License
33 stars 8 forks source link

TypeScript設定挿入時に、yarn startにてコンパイルエラー #41

Closed Egiiegii closed 2 years ago

Egiiegii commented 3 years ago

yarn startで実行されるコマンド:

nodemon --watch "./src/**/*.ts" --exec ts-node ./src/index.ts 

payjp.tsの中身:

import * as Payjp from 'payjp';
import { payjpSetting } from './config';
export const payjp = Payjp(payjpSetting.secretKey);

エラー文章は以下になります。

/Users/.../node_modules/ts-node/src/index.ts:434
    return new TSError(diagnosticText, diagnosticCodes)
           ^
TSError: ⨯ Unable to compile TypeScript:
src/common/payjp.ts:3:22 - error TS2349: This expression is not callable.
  Type '{ default: PayjpStatic; }' has no call signatures.

3 export const payjp = Payjp(payjpSetting.secretKey);
                       ~~~~~

  src/common/payjp.ts:1:1
    1 import * as Payjp from 'payjp';
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.

    at createTSError (/Users/test_repo/node_modules/ts-node/src/index.ts:434:12)
    at reportTSError (/Users/test_repo/node_modules/ts-node/src/index.ts:438:19)
    at getOutput (/Users/test_repo/node_modules/ts-node/src/index.ts:578:36)
    at Object.compile (/Users/test_repo/node_modules/ts-node/src/index.ts:775:32)
    at Module.m._compile (/Users/test_repo/node_modules/ts-node/src/index.ts:858:43)
    at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/test_repo/node_modules/ts-node/src/index.ts:861:12)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)

とった対策: 1) javascript番に切り替える export const payjp = require('payjp')(payjpSetting.secretKey); に置き換えるとコンパイル時にエラーがなくなるが、 あとほどコード修正時にtypescriptフューチャーが使えなくなる。 2) コンパイラーをゆるくする tsconfig.json"esModuleInterop": true,を挿入しても治らなかった