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)
yarn startで実行されるコマンド:
payjp.tsの中身:
エラー文章は以下になります。
とった対策: 1) javascript番に切り替える
export const payjp = require('payjp')(payjpSetting.secretKey);
に置き換えるとコンパイル時にエラーがなくなるが、 あとほどコード修正時にtypescriptフューチャーが使えなくなる。 2) コンパイラーをゆるくするtsconfig.json
に"esModuleInterop": true,
を挿入しても治らなかった