node.js
since 2013-06-07
Ubuntu (WSL) で環境構築
since 2018-08-16
Windows 10 (1803) + WSL Ubuntu 18.04.1 で環境構築したメモ。
手順を概説すると、Ubuntu パッケージの npm で n を入れて、その後でパッケージの npm と nodejs を削除している。
sudo apt install -y npm sudo npm install n -g sudo n stable sudo apt-get purge -y nodejs npm sudo n stable sudo ln -sf /usr/local/bin/node /usr/bin/node sudo npm update -g npm sudo ln -sf /usr/local/bin/npm /usr/bin/npm
これで npx create-react-app my-app とかできる。続きは ReactJS に。
node.js 更新
since 2019-01-21
ひさしぶりに ReactJS create-react-app したら node が古いと言われた。
前述の環境構築だと sudo npm -g install node が失敗する。
> node@11.7.0 preinstall /usr/local/lib/node_modules/node > node installArchSpecificPackage Unhandled rejection Error: EACCES: permission denied, open '/home/nishimotz/.npm/_cacache/tmp/f59d954a' npm ERR! cb() never called! npm ERR! This is an error with npm itself. Please report this error at: npm ERR! <https://npm.community> npm ERR! A complete log of this run can be found in: npm ERR! /home/nishimotz/.npm/_logs/2019-01-21T06_18_04_483Z-debug.log module.js:544 throw err; ^ Error: Cannot find module 'node-linux-x64/package.json' at Function.Module._resolveFilename (module.js:542:15) at Function.resolve (internal/module.js:18:19) at ChildProcess.<anonymous> (/usr/local/lib/node_modules/node/node_modules/node-bin-setup/index.js:18:27) at ChildProcess.emit (events.js:159:13) at maybeClose (internal/child_process.js:943:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node@11.7.0 preinstall: `node installArchSpecificPackage` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the node@11.7.0 preinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/nishimotz/.npm/_logs/2019-01-21T06_18_04_526Z-debug.log
最初にやった n stable を繰り返すと更新できる。
$ sudo n stable install : node-v11.6.0 mkdir : /usr/local/n/versions/node/11.6.0 fetch : https://nodejs.org/dist/v11.6.0/node-v11.6.0-linux-x64.tar.gz ######################################################################## 100.0% installed : v11.6.0
下記で lts をインストールできる
$ sudo n lts
以下 2013年ごろの記事
macports だと:
sudo port install nodejs sudo port install npm
jslint の派生版 jshint を入れる:
sudo npm install -g jshint
Ubuntu に入れる:
$ ./configure $ make $ sudo make install # v0.10.22 を入れたら /usr/local/bin/npm も入っていた。
パッケージで入れる:
sudo apt-get install nodejs sudo apt-get install npm npm config set registry http://registry.npmjs.org/ sudo npm install -g jshint
http://stackoverflow.com/questions/12913141/installing-from-npm-fails
vagrant@precise64 Ubuntu 12.04.4 だと nodejs も npm もバージョンが古いので注意。
$ node -v v0.6.12 $ npm -v 1.1.4 $ jshint -v jshint v2.4.3
xml パーサー
XML パーサーを探したら xml2js を見つけた:
http://d.hatena.ne.jp/zebevogue/20130308/1362707814
https://github.com/Leonidas-from-XIV/node-xml2js
>npm install -g xml2js npm http GET https://registry.npmjs.org/xml2js npm http 200 https://registry.npmjs.org/xml2js npm http GET https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz npm http 200 https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz npm http GET https://registry.npmjs.org/sax npm http 200 https://registry.npmjs.org/sax npm http GET https://registry.npmjs.org/sax/-/sax-0.5.5.tgz npm http 200 https://registry.npmjs.org/sax/-/sax-0.5.5.tgz npm WARN package.json dateformat@1.0.2-1.2.3 No repository field. npm WARN package.json istanbul@0.1.22 No repository field. npm WARN package.json pause@0.0.1 No repository field. npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported. npm WARN package.json Please pick one as the 'repository' field xml2js@0.2.8 C:\Users\nishimotz\AppData\Roaming\npm\node_modules\xml2js └── sax@0.5.5
xml2json というものもあった:
https://github.com/buglabs/node-xml2json
Windows 8 に xml2json を入れようとして Windows SDK 7.1 Command Prompt から下記を実行したらうまくいった。
npm install -g xml2json
Windows SDK が動かないコマンドプロンプトだと node-expat で下記のエラーになる:
(前略) C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBu ild.targets(297,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry. TargetFrameworkVersion or PlatformT oolset may be set to an invalid version number. [C:\Users\nishimo tz\AppData\Roaming\npm\node_modules\xml2json\node_modules\node-ex pat\build\deps\libexpat\expat.vcxproj] C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\M icrosoft.Cpp.x64.targets(146,5): error MSB6006: "CL.exe" はコード -10 73741701 を伴って終了しました。 [C:\Users\nishimotz\AppData\Roamin g\npm\node _modules\xml2json\node_modules\node-expat\build\deps\libexpat\exp at.vcxproj] gyp ERR! build error gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.303 19\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs \node_modules\npm\node_modules\node-gyp\lib\build.js:267:23) gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98 :17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_p rocess.js:789:12) gyp ERR! System Windows_NT 6.2.9200 gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\ npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\nishimotz\AppData\Roaming\npm\node_modules\x ml2json\node_modules\node-expat gyp ERR! node -v v0.10.10 gyp ERR! node-gyp -v v0.9.6 gyp ERR! not ok npm ERR! weird error 1 npm ERR! not ok code 0
jQuery
jQuery も Windows SDK が必要だった。。
C:\Program Files\Microsoft SDKs\Windows\v7.1>npm install -g jquery (中略) jquery@1.8.3 C:\Users\nishimotz\AppData\Roaming\npm\node_modules\jquery ├── location@0.0.1 ├── navigator@1.0.1 ├── xmlhttprequest@1.4.2 ├── htmlparser@1.7.6 ├── contextify@0.1.6 (bindings@1.1.1) └── jsdom@0.2.19 (cssom@0.2.5, cssstyle@0.2.3, request@2.27.0)
NODE_PATH
Windows では NODE_PATH 環境変数の設定が必要という話
http://tmlife.net/programming/javascript/npm-node-js-require-module-memo.html
http://sucrose.hatenablog.com/entry/20120315/p1
set NODE_PATH=C:\Users\nishimotz\AppData\Roaming\npm\node_modules