【小ネタ】importステートメントの名前解決の環境依存

Mac OS上だと以下のimportステートメントの記述で依存モジュールの名前が解決されましたが、CircleCIで動かしているUbuntuでは名前解決できませんでした。

import React from 'React'Error: Cannot find module 'React' from '/home/ubuntu/project-name/src/components'

正しいモジュール名はreactなので、import React from 'react'という記法が正しいものになります。
Mac OSを開発環境にし、CircleCIでビルドしていると、このようなタイポがあった場合、Mac OSではビルドがとおるがCircleCIではとおらないという不整合で時間を消費することになるため、ブログにしておきます。試していませんが、Travis CIでも同様のことが起こると思います。

モジュール名にUpperCaseを入れても、Mac OS上ではignore case(大文字小文字を無視する)でnode_modules下を探してくれますが、Ubuntu上ではmatch case(大文字小文字を区別する)で探索するようです。

試した環境を記載しておきます。

Ubuntu $ uname -a
Linux MyHost.localdomain 3.13.0-106-generic #153-Ubuntu SMP Tue Dec 6 15:44:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu $ node -v
v4.2.6

Ubuntu $ npm -v
2.14.12
Mac OS $ uname -a
Darwin MyHost.local 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64

Mac OS $ node -v
v4.2.6

Mac OS $ npm -v
2.14.12

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です