44189


VScodeでnode.jsとMySQLを組み合わせて書く時に整形がうまくいきません。

[![画像の説明をここに入力](https://i.stack.imgur.com/EHBcq.png)](https://i.stack.imgur.com/EHBcq.png)

上の図のように長いSQL文を書く時に改行を入れたいのですが、改行を入れると下の図のようにエラーになって動かなくなってしまいます。

[![画像の説明をここに入力](https://i.stack.imgur.com/S4osC.png)](https://i.stack.imgur.com/S4osC.png)

うまく整形するにはどのようにすればいいのでしょうか。  
PHPとMySQLの組み合わせでは問題ないのですが。。。


CC BY-SA 4.0
2018-05-23T07:08:22.353
44182
2018-05-23T13:13:46.177
2018-05-23T11:58:20.590
19110
28633
question
mysql node.js vscode
node.jsで複数行のSQLを書くとき、整形がうまくいかない


これはエディタの問題ではなく、文字列リテラルが複数行になるときの文法の問題です。ご提示のプログラムのような文字列リテラルの書き方は構文エラーであるため、エディタでの表示もご想定とは異なるものになっています。

Node.js
において、シングルクォートで囲った文字列リテラルはその中で改行できません。改行が文字列リテラルより優先されます。プログラム中の改行を文字列中の改行として扱う場合は、バッククォートで囲います。

具体的には、以下のようにすると複数行の文字列リテラルになります。

[code]

    const str1 = `SELECT piyo
    FROM example
    WHERE pyon = 1`;
    
    // 以下は行内で文字列リテラルが終わっていないため、構文エラーです。
    /*
    const str2 = 'SELECT piyo
    FROM example
    WHERE pyon =1';
    */
    
[/code]

PHP においてはダブルクォートで囲った文字列リテラルの中で改行ができるため、今までエラーが出なかったのでしょう。

## 参考

  * ["How do I do a multi-line string in node.js?"](https://stackoverflow.com/q/6220420/5989200) \-- Stack Overflow
  * ["Multi-line strings in PHP"](https://stackoverflow.com/q/9744192/5989200) \-- Stack Overflow


CC BY-SA 4.0
2018-05-23T11:50:49.373
44189
2018-05-23T13:13:46.177
2018-05-23T13:13:46.177
19110
19110
44182
answer