20200701のNode.jsに関する記事は6件です。

Cloud Firestore でサーバーの現在時刻を保存する

概要

Firebase の Cloud Firestore でサーバーの現在時刻を保存する方法を調べたので、ご紹介します。

Firestore でサーバーの現在時刻を保存するサンプルコード

結論としては、 require("firebase-admin").firestore.FieldValue.serverTimestamp() を利用すれば良いです。

以下、Node.js のサンプルコードです。

const admin = require("firebase-admin");
const db = admin.firestore();
const FieldValue = admin.firestore.FieldValue;

let docRef = db.collection('objects').doc('some-id');

let updateTimestamp = docRef.update({
  timestamp: FieldValue.serverTimestamp()
});

以上、Cloud Firestore でサーバーの現在時刻を保存したい、現場からお送りしました。

参考情報

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Error ExecJS::RuntimeUnavailable: 発生時の対処法

発生現象

AWSのEC2でWebサーバ、アプリケーションサーバの設定時に、環境変数の設定をする際の$ rake secretを実行した際に下記Errorが発生。

terminal
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
/var/www/chat-space/config/application.rb:7:in `<top (required)>'
/var/www/chat-space/Rakefile:4:in `require_relative'
/var/www/chat-space/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

→Javascriptがうまく走っていないので、Node.jsをinstallする。

install確認

local環境にて

terminal
$ node --version
v12.16.1

AWSの本番環境にもinstallする

terminal
sudo yum install nodejs --enablerepo=epel  ←実行
読み込んだプラグイン:priorities, update-motd, upgrade-helper
amzn-main                                                          | 2.1 kB  00:00:00     
amzn-updates                                                       | 3.8 kB  00:00:00     
epel/x86_64/metalink                                               | 5.3 kB  00:00:00     
epel                                                               | 4.7 kB  00:00:00     
nodesource                                                         | 2.5 kB  00:00:00     
(1/3): epel/x86_64/group_gz                                        |  74 kB  00:00:00     
(2/3): epel/x86_64/updateinfo                                      | 789 kB  00:00:00     
(3/3): epel/x86_64/primary_db                                      | 6.1 MB  00:00:00     
1073 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ nodejs.x86_64 2:6.17.1-1nodesource を インストール
--> 依存性の処理をしています: python >= 2.6 のパッケージ: 2:nodejs-6.17.1-1nodesource.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ python26.x86_64 0:2.6.9-2.89.amzn1 を インストール
--> 依存性の処理をしています: libpython2.6.so.1.0()(64bit) のパッケージ: python26-2.6.9-2.89.amzn1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ python26-libs.x86_64 0:2.6.9-2.89.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================
 Package              アーキテクチャー
                                    バージョン                    リポジトリー       容量
==========================================================================================
インストール中:
 nodejs               x86_64        2:6.17.1-1nodesource          nodesource         13 M
依存性関連でのインストールをします:
 python26             x86_64        2.6.9-2.89.amzn1              amzn-main         5.8 M
 python26-libs        x86_64        2.6.9-2.89.amzn1              amzn-main         697 k

トランザクションの要約
==========================================================================================
インストール  1 パッケージ (+2 個の依存関係のパッケージ)

総ダウンロード容量: 20 M
インストール容量: 59 M
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/latest/nodesource/packages/nodejs-6.17.1-1nodesource.x86_64.rpm: ヘッダー V4 RSA/SHA512 Signature、鍵 ID 34fa74dd: NOKEY
nodejs-6.17.1-1nodesource.x86_64.rpm の公開鍵がインストールされていません
(1/3): nodejs-6.17.1-1nodesource.x86_64.rpm                        |  13 MB  00:00:00     
(2/3): python26-libs-2.6.9-2.89.amzn1.x86_64.rpm                   | 697 kB  00:00:00     
(3/3): python26-2.6.9-2.89.amzn1.x86_64.rpm                        | 5.8 MB  00:00:01     
------------------------------------------------------------------------------------------
合計                                                       16 MB/s |  20 MB  00:00:01     
file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL から鍵を取得中です。
Importing GPG key 0x34FA74DD:
 Userid     : "NodeSource <gpg-rpm@nodesource.com>"
 Fingerprint: 2e55 207a 95d9 944b 0cc9 3261 5ddb e8d4 34fa 74dd
 Package    : nodesource-release-el7-1.noarch (installed)
 From       : /etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python26-libs-2.6.9-2.89.amzn1.x86_64                     1/3 
  インストール中          : python26-2.6.9-2.89.amzn1.x86_64                          2/3 
  インストール中          : 2:nodejs-6.17.1-1nodesource.x86_64                        3/3 
  検証中                  : 2:nodejs-6.17.1-1nodesource.x86_64                        1/3 
  検証中                  : python26-2.6.9-2.89.amzn1.x86_64                          2/3 
  検証中                  : python26-libs-2.6.9-2.89.amzn1.x86_64                     3/3 

インストール:
  nodejs.x86_64 2:6.17.1-1nodesource                                                      

依存性関連をインストールしました:
  python26.x86_64 0:2.6.9-2.89.amzn1        python26-libs.x86_64 0:2.6.9-2.89.amzn1       

完了しました!

以上で本番環境でもjavascriptが走るようになりました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Node.jsを使用してWebアプリケーションからAlibaba Cloud Object Storage Serviceにコンテンツをアップロード

このチュートリアルでは、Node.jsを使ってWebアプリケーションからAlibaba Cloud Object Storage Serviceにコンテンツをアップロードする方法を検討します。

本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。

必要条件

このチュートリアルを実行するには、以下のものが必要です。

1、Alibaba Cloud Object Storage Serviceに登録し、秘密のアクセスキーを取得します。
2、マシン上でNode.jsとnpmを実行します。Node.js Downloadsには、Nodeのインストール方法についての詳細な情報が記載されています。
まとめると、Alibaba Cloudのアカウント、Object Storage Service、Node.js、npm、OSSサービスのアクセスキーが必要になります。

アクセスキーをクレデンシャルファイルに追加する方法

そもそも、Alibaba Cloud OSSはRESTfulなAPI操作をサポートしており、ほとんどの言語に対応したSDKを提供しています。このチュートリアルでは、オープンソースのOSS JavaScript SDK for node.jsを使用します。まずはこのように ali-oss をインストールする必要があります。

npm install ali-oss

注目すべきは、同期モードと非同期モードの2つのモードから選択できることです。

同期モードで使用するには、さらにcoと組み合わせて使用することができます。 coをインストールするようにしてください。

npm install co

非同期モードはコールバックをサポートしています。

クライアントの初期化

このメソッドは同期モードで適用されます。このメソッドでは、以下のような app.js オブジェクトを作成します。

var co = require('co');
var OSS = require('ali-oss');

var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

Alibaba Cloudでは、OSSサービスに加入している場合、地域を指定しなければならなかったので、リージョンフィールドは非常に重要です。OSSノードの完全なリストは以下の通りです。

さらに、OSS Nodesのリストにないエンドポイントもありますが、その場合は以下のパラメータを設定する必要があります。

1、secure: リージョンと組み合わせて使用します。secureをtrueに指定した場合はHTTPを使ってアクセスします。

2、endpoint: エンドポイントを指定した場合、リージョンを無視しても大丈夫です。endpointにHTTPSを指定してもOKです。

3、bucket:バケットが指定されていない場合は、まず useBucket インターフェースを呼び出す必要があります。

4、timeout: デフォルトでは60秒です。OSS APIのタイムアウトを指定するためのパラメータです。

見た目は問題なさそうですが、次のステップに進みます。

依存関係のインストール

このステップではnode.jsの依存関係をインストールして、ノードアプリケーションが置かれるディレクトリを作成します。このチュートリアルでは、OSS-node-appで以下のようにアプリを作成します。

mkdir sites/OSS-node-app && cd sites/OSS-node-app

次に、package.jsonファイルを作成し、そこに以下のコードを貼り付けます。

{
  "name": "OSS-node-app",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "license": "MIT"
}

上記のサンプルでは、アプリの名前、バージョン、ライセンスを記述した package.json ファイルを作成しています。scriptsパラメータは、node server.jsではなく、npm startを使用してnode serverを実行できるようにします。

インストールする必要のあるすべての依存関係は、npm installコマンドを使用してインストールされます。次に4つの依存関係が続き、このプロジェクトでは以下のようにインストールされます。

npm install ali-oss express 

私たちの依存関係は、OSSのAPIを使って作業したり、Webサーバーを立ち上げたり、ファイルのアップロードを処理したりすることを可能にしています。上記のコマンドはまた、package.jsonを更新します。

1、ali-OSS - 私たちがJavaScript APIにアクセスできるようにするためのJavaScript用のAlibaba SDKです。
2、express - Expressは、サーバーの迅速かつ効率的なセットアップを可能にします。
プロジェクトの場所と依存関係がすべてセットアップされたので、サーバーを起動してフロントエンドのビューをセットアップすることができます。すべての依存関係は、それ以降のすべてのNode.jsバージョンではデフォルトでpackage.jsonファイルに保存されることに注意してください。

フロントエンドアプリの作成

アプリケーションのパブリックビュー用のファイルを作成することから始めましょう。index.html、succeed.html、error.htmlを使ってパブリックフォルダを作成します。これら3つのファイルは、以下に示すようなHTMLの骨格を持っていますが、内容が異なるだけです。全てのファイルに以下のコードを貼り付けます。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>OSS Node Tutorial</title>

  <link rel="stylesheet" href="./style.css">
</head>

<body>

  <!—your content here -->

</body>

</html>

このように、それぞれのファイルにエラーメッセージを書き込んでください。

<h1>Something went wrong!</h1>
<p>Uploading the file was unsuccessful.</p>

このように、それぞれのファイルに成功メッセージを書き込んでください。

<h1>Success!</h1>
<p>File uploaded successfully.</p>

ここでは、index.htmlにmultipart/form-dataを含むHTMLフォームを作成します。フォームには、送信ボタンも用意しなければなりません。

<h1>OSS Tutorial</h1>

<p>Please select a file and submit form to upload.</p>

<form method="post" enctype="multipart/form-data" action="/upload">
  <label for="file">Upload a file</label>
  <input type="file" name="upload">
  <input type="submit" class="button">
</form>

では、インターフェイスを見やすくするためにstyle.cssを作成します。

html {
  font-family: sans-serif;
  line-height: 1.5;
  color: #333;
}

body {
  margin: 0 auto;
  max-width: 500px;
}

label,
input {
  display: block;
  margin: 5px 0;
}

無事にアップロード用のファイル、成功ページとエラーページの作成が完了しましたので、弊社のNode.jsアプリをご紹介します。

Expressを使ったサーバーの設定

今回はExpressフレームワークを使ってnode.jsサーバーを濡らしていきます。まず、プロジェクトのルートディレクトリにserver.jsファイルを作成します。次に、require()を使用して4つの依存関係をロードし、以下のようにExpressのアプリインスタンスを経由してアプリをルーティングする必要があります。

server.js
// Load dependencies
const ali = require(ali-oss');
const express = require('express');
const app = express();

アプリケーションのフロントエンドは公開リポジトリにあるので、依存関係の設定は以下のように設定しなければなりません。

// Views in public directory
app.use(express.static('public'));

そして、3つのファイルをサーバのルートに相対的にルーティングするように進めます。

// Main, error and success views
app.get('/', function (request, response) {
  response.sendFile(__dirname + '/public/index.html');
});
app.get("/success", function (request, response) {
  response.sendFile(__dirname + '/public/success.html');
});
app.get("/error", function (request, response) {
  response.sendFile(__dirname + '/public/error.html');
});

ここでは、リスニングに使用するポートを設定する必要があります。

server.js
app.listen(5000, function () {
  console.log('Server listening on port 5000.');
});

これを保存して、npm startを使ってサーバーを起動します。

npm start
Output
> node server.js
Server listening on port 5000.

ブラウザのアドレスバーにhttp://localhost:5000と入力すると、アップロードフォームにアクセスできるはずです。また、http://localhost:5000/successhttp://localhost:5000/error にアクセスして反応を試してみてください。

ファイルのアップロード

サーバーはすべてセットアップされているので、最初のファイルをAlibaba OSSにアップロードできるようにするために、フォームをali-ossに統合しなければなりません。

server.js
const app = express();
// Set endpoint to Alibaba OSS
const spacesEndpoint = new OSS.Endpoint(' http://oss-cn-hangzhou.aliyuncs.com.');
const s3 = new OSS({
  endpoint: spacesEndpoint
});

新しい OSS() を使用して OSS クライアントに接続する必要があります。

この最初のインスタンスでは、単純なローカルファイルのアップロードを実装しています。

var co = require('co');
var OSS = require('ali-oss')

var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: 'Your bucket name'
});

co(function* () {
  var result = yield client.put('object-key', 'local-file');
  console.log(result);
}).catch(function (err) {
  console.log(err);
});

2 番目のインスタンスでは、putStream インターフェイスを使用してアクセスされたストリームのアップロードを使用します。固有の読み取り可能なストリームを持つ任意のオブジェクトは、このメソッドで有効になります(オブジェクトとネットワーク ストリームの両方)。putStream インターフェースが使用されると、SDK は自動的にチャンク化されたエンコーディングの HTTP PUT を開始します。

var co = require('co');
var OSS = require('ali-oss');
var fs = require('fs');

var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: 'Your bucket name'
});

co(function* () {
  // use 'chunked encoding'
  var stream = fs.createReadStream('local-file');
  var result = yield client.putStream('object-key', stream);
  console.log(result);

  // do not use 'chunked encoding'
  var stream = fs.createReadStream('local-file');
  var size = fs.statSync('local-file').size;
  var result = yield client.putStream(
    'object-key', stream, {contentLength: size});
  console.log(result);
}).catch(function (err) {
  console.log(err);
});

バッファ内のオブジェクトの内容をアップロードするには、put インターフェースを介してアクセスします。

var co = require('co');
var OSS = require('ali-oss');

var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: 'Your bucket name'
});

co(function* () {
  var result = yield client.put('object-key', new Buffer('hello world'));
  console.log(result);
}).catch(function (err) {
  console.log(err);
});

非常に大きなファイルをアップロードする場合、multipartUploadインターフェースはリクエストをより小さな実行可能なリクエストに分割することができます。この方法の利点は、ファイル全体を修正するのとは対照的に、失敗した部分だけをアップロードする必要があることです。以下のパラメータを使用します。

1、name {String}:オブジェクト名
2、file {String|File}:ファイルパスまたは HTML5 Web ファイル
3、[options] {Object}:オプションのパラメータ

1、[checkpoint] {Object}: 再開可能なアップロードで使用するエンドポイントのチェックポイントです。このパラメータを設定すると、エンドポイントからアップロードが開始されます。設定されていない場合は、アップロードを再開します。
2、[partSize] {Number}: パーツサイズ
3、[progress] {Funtion}: ジェネレーター機能。3つのパラメータを含む。
-----1.(percentage {Number}: アップロードの進捗状況 (0から1までの10進数)
-----2.(checkpoint {Object}.:エンドポイントチェックポイント
-----3.(res {Object}):単一のパーツが正常にアップロードされた後に返されるレスポンス
4、[meta] {Object}: x-oss-meta-という接頭辞を持つユーザによって定義されたヘッダメタ情報。
5、[headers] {Object}: 余分なヘッダ。詳細は RFC 2616 を参照してください。
-----1.'Cache-Control':HTTP リクエストとレスポンスでコマンドを指定してキャッシュメカニズムを実装するために使用される一般的なヘッダ。例えば、以下のようになります。Cache-Control: public, no-cache
-----2.'Content-Disposition':これは、内部参照(ウェブページやページの一部)や、ローカルにダウンロードして保存された添付ファイルである可能性があります。例えば、以下のようになります。Content-Disposition: somename
-----3.'Content-Encoding':特定のメディアタイプのデータを圧縮するために使用されます。例えば Content-Encoding: gzip
-----4.'Expires':有効期限。例えば Expires. 3600000

var co = require('co');
var OSS = require('ali-oss')

var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: 'Your bucket name'
});

co(function* () {
  var result = yield client.multipartUpload('object-key', 'local-file', {
    progress: function* (p) {
      console.log('Progress: ' + p);
    }
 meta: {
      year: 2017,
      people: 'test'
    }
  });
  console.log(result);
  var head = yield client.head('object-key');
  console.log(head);
}).catch(function (err) {
  console.log(err);
});

上記のprogressパラメータは、アップロードの進捗状況を取得するためのcalback関数です。

var progress = function (p) {
  return function (done) {
    console.log(p);
    done();
  };
};

結論

おめでとうございます。Alibaba Cloud Object Storage Service (OSS) スペースにオブジェクトをアップロードするためのExpressアプリケーションの設定に成功しました! Alibaba Cloudのアカウントをお持ちでない方は、アカウントを登録してください。アカウントにサインアップして、最大1200ドル相当の40以上の製品を無料でお試しください。Alibaba Cloudの詳細については、「Get Started with Alibaba Cloud」を参照してください。

アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AltJS製のNodeモジュールをGitHubから直接インストールすると同時に、そのライブラリのビルドを自動化するpackage.jsonの設定

この投稿では、NodeモジュールをGitHubから直接インストールする際、そのライブラリをインストールのタイミングでビルドする方法を紹介します。

この手法はどういうときに使うか?

普段、yarn add ライブラリ名をすると、npmjs.orgのレジストリにアップロードされたモジュールが、手元のnode_modulesに入ってきます。仮に、ライブラリのソースコードがTypeScriptやBebelなどのAltJSであったとしても、node_modulesにインストールされるのは普通ビルド後のJavaScriptです。これはライブラリ開発者がnpmjs.orgに公開するとき、AltJSからJavaScriptにビルドしたものをアップロードしてくれているからです。

なので、モジュール利用者は、ライブラリのソースコードがもともとどんな言語で書かれているかを気にする必要がありませんし、ましてや、モジュール利用者がnpm installしするたびに、わざわざライブラリのソースコードからビルドする必要は普通ありません。

どうしてもソースコードからインストール&ビルドしたい場合に使う

しかし、場合によっては「普通」じゃないインストールをしたい場合があります。どうしてもソースコードからインストールする必要がある場合です。

例えば、「ライブラリのGitHubにプルリクエストを送って取り込まれたけれど、npmjs.orgには未公開。でも、すぐにそのリビジョンのコードを使いたい」といったケースです。

このケースでは、どこにもビルド済みのコードがなく、TypeScriptやBebelなどのAltJSのコードがGitHub上にあるだけ、という状況になります。

YarnやNPMでは、GitHubのURLを指定してmasterブランチをnode_modulesにインストールすることができます:

npm install 'https://github.com/suin/isObject.js.git#master'
# or
yarn add 'https://github.com/suin/isObject.js.git#master'

しかし、この方法ではAltJSのコードしかインストールされず、必要となるビルド後のJSファイルが手に入りません:

ls -a1 node_modules/@suin/is-object
CHANGELOG.md
index.ts # TypeScriptしかない!
LICENSE
package.json

このままでは、モジュールをimport/require()しても使えません。

モジュールのインストールと同時にビルドを実行する必要があるのです。

モジュールインストール時にビルドを実行するためのpackage.jsonの設定

では、npm installyarn addと同時に、インストールしたモジュールのビルドを実行するにはどうしたらいいか、どういう設定をpackage.jsonに施したらいいかについて説明します。

ステップ1: モジュールのビルド方法を調べる

まず、自プロジェクトのpackage.jsonをいじる前に、ビルドするパッケージのpackage.jsonを開いて情報収集します。

例えば、@suin/is-objectパッケージのpackage.jsonは以下のようになっています:

package.json
{
  "name": "@suin/is-object",
  "version": "1.1.3",
  "description": "TypeScript friendly isObject function",
  ...
  "main": "index.js",
  ...
  "scripts": {
    "build": "tsc",
    ...
  },
  "devDependencies": {
    ...
  }
}

この中で注目するのは、mainフィールドとscriptsフィールドです。

1つ目のmainフィールドはビルド後の成果物のファイル名です。ライブラリ利用者の我々としては、これが欲しいのでこのファイル名をメモしておきます。

2つ目のscriptsフィールドには、たいていビルドするためのコマンドが定義されています。多くの場合、buildという名前で定義することが多いです。ここはライブラリの開発者次第なので、よく調べてみる必要があります。ライブラリによってはREADME.mdやCONTRIBUTING.mdにビルドの手順が書いてあるかもしれないので、そこも目を通しておきます。この@suin/is-objectパッケージの例では、buildコマンドだけで良いことがわかります。

また、パッケージがYarnとNPMどちらでビルドしているのかも調べておきます。これは、yarn.lockとpackage-lock.jsonどちらがあるかで判断できます。

ステップ2: postinstallにビルドのスクリプトを組む

上の調査で、ビルド後の成果物ファイル名とビルド方法が分かったら、自プロジェクトのpackage.jsonに手を加えて、モジュールのインストール時にビルドを実行するように設定します。

yarn addnpm install後に何かコマンドを実行するには、postinstallscriptsフィールドに追加します:

package.json
{
  "name": "my-app",
  "scripts": {
    "postinstall": "echo インストール後になにかするよ"
  }
}

CleanShot 2020-07-01 at 09.23.12@2x.png

postinstallにはシェルスクリプトが書けるので、ここにモジュールをビルドするためのコマンドを書いていきます。@suin/is-objectパッケージの例では、次のようなステップでビルドします。

  1. 成果物ファイルのindex.jsがあるか確認する。
  2. あればビルドしない。→ 終了
  3. なければ、
    1. モジュールが依存するパッケージをインストールする。
    2. モジュールをビルドする。 → 終了

これをシェルスクリプトに起こすと、次のようになります:

set -eux
# 成果物ファイルの`index.js`があるか確認する。
if [ ! -f ./node_modules/@suin/is-object/index.js ]
then # なければ、
  cd ./node_modules/@suin/is-object
  # モジュールが依存するパッケージをインストールする。
  yarn install --frozen-lockfile
  # モジュールをビルドする。
  yarn build
fi

このシェルスクリプトをpostinstallに書いておきます:

package.json
{
  "scripts": {
    "postinstall": "set -eux; if [ ! -f ./node_modules/@suin/is-object/index.js ]; then cd ./node_modules/@suin/is-object; yarn install --frozen-lockfile; yarn build; fi"
}

この状態で、モジュールをGitHubからインストールしてみます:

yarn add 'https://github.com/suin/isObject.js.git#master'

実行結果は次のようになります。ライブラリのインストール後に、ライブラリのビルドが行われました:

CleanShot 2020-07-01 at 09.49.27@2x.png

以上で、package.jsonの設定は完了です。

これにより、AltJS製のNodeモジュールをGitHubから直接インストールすると同時に、そのライブラリのビルドが自動化されます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Node.js をインストールする

環境

  • Windows 10 Pro
  • 64ビット

ダウンロード

node.js のサイトから使用環境に該当するインストーラーをダウンロードする。
https://nodejs.org/ja/download/

  • ここでは LTS(Long Term Support)推奨版の Windows Installer を選択 image.png

インストール

  • ダウンロードした「node-v12.18.2-x64.msi」を実行。セットアップウィザードが表示されるので次へ
    image.png

  • ライセンスの同意にチェックをして次へ
    image.png

  • インストール先に変更が無ければ、そのまま次へ
    image.png

  • インストールする対象を選択して次へ(ここではそのまま次に進む)
    image.png

項目 概要
Node.js runtime Node.js の本体
Event tracing (ETW) Node.jsで生成されたイベントをETW(Event Tracing for Windows)でトレースできるようにする?
npm package manager パッケージの管理
Online documentation shotcuts オンラインドキュメント・ウェブサイトへのショートカット
Add to PATH Node.js と npm を環境変数に追加
Node.js and npm システム環境変数への追加
npm modules npm をユーザー環境変数へ追加
  • オプションで、ネイティブモジュールのコンパイルに必要なツールをインストールします。
     ここではインストールせず次へ
    image.png

  • ここまでの設定で問題が無ければ、インストールを実行
    image.png

  • インストールの完了
    image.png

確認

  • Windows のスタートメニューに node.js が追加されているのを確認
    image.png

  • コマンドプロンプトでnode, npm のバージョンを確認
    image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Node.js をインストールする(Windows)

環境

  • Windows 10 Pro
  • 64ビット

ダウンロード

node.js のサイトから使用環境に該当するインストーラーをダウンロードする。
https://nodejs.org/ja/download/

  • ここでは LTS(Long Term Support)推奨版の Windows Installer を選択 image.png

インストール

  • ダウンロードした「node-v12.18.2-x64.msi」を実行。セットアップウィザードが表示されるので次へ
    image.png

  • ライセンスの同意にチェックをして次へ
    image.png

  • インストール先に変更が無ければ、そのまま次へ
    image.png

  • インストールする対象を選択して次へ(ここではそのまま次に進む)
    image.png

項目 概要
Node.js runtime Node.js の本体
Event tracing (ETW) Node.jsで生成されたイベントをETW(Event Tracing for Windows)でトレースできるようにする?
npm package manager パッケージの管理
Online documentation shotcuts オンラインドキュメント・ウェブサイトへのショートカット
Add to PATH Node.js と npm を環境変数に追加
Node.js and npm システム環境変数への追加
npm modules npm をユーザー環境変数へ追加
  • オプションで、ネイティブモジュールのコンパイルに必要なツールをインストールします。
     ここではインストールせず次へ
    image.png

  • ここまでの設定で問題が無ければ、インストールを実行
    image.png

  • インストールの完了
    image.png

確認

  • Windows のスタートメニューに node.js が追加されているのを確認
    image.png

  • コマンドプロンプトでnode, npm のバージョンを確認
    image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む