Windows 7でNode.jsパッケージ(sqlite3、socket.io)のインストール時に発生するエラーMSB8020の解決策
Windows 7 で Node.js パッケージ (sqlite3, socket.io) のインストール時に発生するエラー MSB8020 の解決策
Windows 7 で Visual Studio 2012 を使用して Node.js 開発を行っている際に、npm install
コマンドを使って sqlite3
や socket.io
などのパッケージをインストールしようとすると、MSB8020
エラーが発生することがあります。
原因
このエラーは、Visual Studio 2012 のビルド ツールと Node.js のネイティブ アドオンのビルド プロセス間の互換性の問題が原因で発生します。
解決策
この問題を解決するには、以下のいずれかの方法を試してください。
方法 1: Node.js バージョンを下げる
古いバージョンの Node.js (8.x 以下) を使用すると、この問題が発生する可能性が低くなります。Node.js の古いバージョンをダウンロードしてインストールし、npm install
コマンドを再実行してください。
方法 2: Visual Studio 2013 以降を使用する
Visual Studio 2013 以降は、Node.js のネイティブ アドオンとの互換性が向上しており、この問題が発生する可能性が低くなります。Visual Studio 2013 以降をダウンロードしてインストールし、npm install
コマンドを再実行してください。
方法 3: npm-windows-build-tools を使用する
npm-windows-build-tools
は、Windows 上で Node.js ネイティブ アドオンをビルドするためのツールセットです。このツールセットを使用すると、Visual Studio 2012 と互換性のあるネイティブ アドオンをビルドすることができます。
npm-windows-build-tools
をグローバルにインストールします。
npm install --global npm-windows-build-tools
npm install
コマンドを実行する前に、以下のコマンドを実行してnpm-windows-build-tools
を有効にします。
set PATH=%PATH%;C:\Program Files (x86)\nodejs\node_modules\npm-windows-build-tools\bin
npm install
コマンドを再実行してください。
方法 4: パッケージのプリビルド済みバイナリを使用する
一部のパッケージは、プリビルド済みバイナリを提供しています。これらのバイナリを使用すると、ネイティブ アドオンをビルドする必要がなくなり、MSB8020
エラーを回避できます。
パッケージのドキュメントで、プリビルド済みバイナリが利用可能かどうかを確認してください。利用可能な場合は、以下の手順でインストールしてください。
- プリビルド済みバイナリをダウンロードします。
- ダウンロードしたバイナリを Node.js のインストールディレクトリ内の
node_modules
フォルダに配置します。
上記の方法で解決できない場合は、以下の情報も提供してください。
- 発生しているエラーメッセージの詳細
- Visual Studio 2012 のバージョン
- Node.js のバージョン
const sqlite3 = require('sqlite3');
// データベースを開く
const db = new sqlite3.Database('database.db');
// テーブルを作成する
db.run(`
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
);
`);
// データを挿入する
db.run(`
INSERT INTO users (name, email)
VALUES (?, ?);
`, ['Alice', '[email protected]']);
// データを取得する
db.all(`
SELECT * FROM users;
`, (err, rows) => {
if (err) {
console.error(err);
return;
}
console.log(rows);
});
// データベースを閉じる
db.close();
このコードは、以下の操作を実行します。
sqlite3
モジュールをインポートします。database.db
という名前のデータベースを開きます。users
という名前のテーブルを作成します。このテーブルには、id
、name
、およびemail
という 3 つの列があります。Alice
という名前と[email protected]
というメール アドレスを持つユーザーをusers
テーブルに挿入します。users
テーブル内のすべてのデータを取得します。- データベースを閉じます。
Visual C++ Redistributable for Visual Studio 2012 は、Node.js のネイティブ アドオンをビルドするために必要なライブラリを含むパッケージです。このパッケージをインストールすると、問題が解決する可能性があります。
- ダウンロードしたファイルをインストールします。
方法 6: Node.js を Chocolatey でインストールする
Chocolatey は、Windows 用のパッケージ マネージャーです。Chocolatey を使用すると、Node.js を簡単にインストールして更新することができます。
- 以下のコマンドを実行して Node.js をインストールします:
choco install nodejs
方法 7: システム環境変数を設定する
以下のシステム環境変数を設定すると、問題が解決する可能性があります。
VS100COMNTOOLS
変数を Visual Studio 2012 のインストールディレクトリ内のVC\bin
フォルダに設定します。
node.js sqlite visual-studio-2012