npxでserverless(sls) create -t aws-nodejs-typescriptするとエラーになる対処法

Serverless Error ---- The file "package.json" already exists, and serverless will not overwrite it. Move the file and try again if you want serverless to write a new "package.json"
2020.09.22

エラー内容

npxでserverless(sls)コマンドを使い、TypeScriptのテンプレートを使ってサービスを作成しようとするとエラーになります。具体的なコマンド例は以下です。

$ npm init -y
(出力は省略)
$ npm install -D serverless
(出力は省略。バージョン2.1.1のServerlessコマンドがインストールされました。)
$ npx sls create -t aws-nodejs-typescript
Serverless: Generating boilerplate...
 
  Serverless Error ---------------------------------------
 
  The file "package.json" already exists, and serverless will not overwrite it. Move the file and try again if you want serverless to write a new "package.json"
 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              12.16.1
     Framework Version:         2.1.1 (local)
     Plugin Version:            4.0.4
     SDK Version:               2.3.2
     Components Version:        3.1.3

TypeScriptのテンプレートはpackage.jsonを新規作成しますが、そのファイルは前段の npm init -yですでに作成されているためにエラーになっています。

エラー解消法

--path-pオプションを使って子ディレクトリにサービスを作成しましょう。今回はkazue-testという子ディレクトリにしています。

$ npx sls create -t aws-nodejs-typescript -p kazue-test

ただし、その子ディクトリではnpxでserverless(sls)コマンドが使えないので、再度インストールします。

$ cd kazue-test
$ npm install -D serverless
(出力は省略)
$ npm install
(出力は省略)

これで以降は問題なくnpxでserverless(sls)コマンドが使えるようになります。

$ npx sls deploy
Serverless: Bundling with Webpack...
Time: 292ms
Built at: 2020-09-22 20:33:18
         Asset      Size  Chunks                   Chunk Names
    handler.js  1.28 KiB       0  [emitted]        handler
handler.js.map  5.27 KiB       0  [emitted] [dev]  handler
Entrypoint handler = handler.js handler.js.map
[0] ./handler.ts 316 bytes {0} [built]
[1] external "source-map-support/register" 42 bytes {0} [built]
Serverless: Package lock found - Using locked versions
Serverless: Packing external modules: source-map-support@^0.5.10
Serverless: Packaging service...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
........
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service kazue-test.zip file to S3 (289.5 KB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
..............................
Serverless: Stack update finished...
Service Information
service: kazue-test
stage: dev
region: us-east-1
stack: kazue-test-dev
resources: 11
api keys:
  None
endpoints:
  GET - https://bc3t0ptn3l.execute-api.us-east-1.amazonaws.com/dev/hello
functions:
  hello: kazue-test-dev-hello
layers:
  None

参考情報