在 运行 Angular 2 快速启动时解决或修复 NPM lite-server on Linux 错误
Work Around or Fix for NPM lite-server on Linux error when running Angular 2 Quick Start
我无法在 Ubuntu 14.04 上使用 npm 启动 lite-server 2.1.0。我正在尝试 运行 Angular2 快速入门示例。
此问题可能是 Linux 特有的,并且仅在最近更新 Ubuntu 后才开始出现。我能够在 Windows 8.1 上成功 运行 Angular2 快速入门。我尝试了各种不同版本的 NPM 和 Node,结果没有任何变化。 运行 Angular Heroes 示例也因同样的问题而失败。
任何解决方案或临时解决方法将不胜感激。
成功将 typescript 转译为 javascript 后,这是尝试通过 npm 启动 lite-server 的结果:
npm run lite
events.js:154
throw er; // Unhandled 'error' event
^
Error: watch node_modules/insight/node_modules/lodash/internal/baseForOwnRight.js ENOSPC
at exports._errnoException (util.js:856:11)
at FSWatcher.start (fs.js:1313:19)
at Object.fs.watch (fs.js:1341:11)
at createFsWatchInstance (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:37:15)
at setFsWatchListener (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:80:15)
at FSWatcher.NodeFsHandler._watchWithNodeFs (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:228:14)
at FSWatcher.NodeFsHandler._handleFile (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:255:21)
at FSWatcher.<anonymous> (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:473:21)
at FSReqWrap.oncomplete (fs.js:82:15)
npm ERR! Linux 3.19.0-49-generic
npm ERR! argv "/tf/node/bin/node" "/tf/node/bin/npm" "run" "lite"
npm ERR! node v5.6.0
npm ERR! npm v3.7.2
npm ERR! code ELIFECYCLE
npm ERR! ang2-reg@1.0.0 lite: `lite-server`
npm ERR! Exit status 1
这是 package.json。我确实将 lite-server 升级到 2.1.0 以查看是否有帮助,但没有帮助。
{
"name": "ang2-reg",
"version": "1.0.0",
"scripts": {
"postinstall": "npm run typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",
"typings" : "typings"
},
"license": "ISC",
"dependencies": {
"angular2": "2.0.0-beta.6",
"bootstrap": "^3.3.6",
"systemjs": "0.19.20",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"systemjs": "0.19.17",
"zone.js": "0.5.14"
},
"devDependencies": {
"concurrently": "^1.0.0",
"lite-server": "^2.1.0",
"typescript": "^1.8.0",
"typings":"^0.6.8"
}
}
这是打字稿配置:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
这是来自 npm-debug.log 的错误消息部分:
10 verbose lifecycle ang2-reg@1.0.0~lite: CWD: /tf/sbtf/ang2-reg
11 silly lifecycle ang2-reg@1.0.0~lite: Args: [ '-c', 'lite-server' ]
12 silly lifecycle ang2-reg@1.0.0~lite: Returned: code: 1 signal: null
13 info lifecycle ang2-reg@1.0.0~lite: Failed to exec lite script
14 verbose stack Error: ang2-reg@1.0.0 lite: `lite-server`
14 verbose stack Exit status 1
14 verbose stack at EventEmitter.<anonymous>
(/tf/node/lib/node_modules/npm/lib/utils/lifecycle.js:239:16)
14 verbose stack at emitTwo (events.js:100:13)
14 verbose stack at EventEmitter.emit (events.js:185:7)
14 verbose stack at ChildProcess.<anonymous>
(/tf/node/lib/node_modules/npm/lib/utils/spawn.js:24:14)
14 verbose stack at emitTwo (events.js:100:13)
14 verbose stack at ChildProcess.emit (events.js:185:7)
14 verbose stack at maybeClose (internal/child_process.js:827:16)
14 verbose stack at Process.ChildProcess._handle.onexit
(internal/child_process.js:211:5)
15 verbose pkgid ang2-reg@1.0.0
16 verbose cwd /tf/sbtf/ang2-reg
17 error Linux 3.19.0-49-generic
18 error argv "/tf/node/bin/node" "/tf/node/bin/npm" "run" "lite"
19 error node v5.6.0
20 error npm v3.7.2
21 error code ELIFECYCLE
22 error ang2-reg@1.0.0 lite: `lite-server`
22 error Exit status 1
如果您正在寻找解决方法,建议使用 NodeJS 的 版本 4.x。
移除 NodeJS 5.x
sudo apt-get remove nodejs
编辑源列表以在 repo
中启用节点 4.x
sudo nano /etc/apt/sources.list.d/nodesource.list
然后在文件中编辑两行:
deb https://deb.nodesource.com/node_5.x vivid main
deb-src https://deb.nodesource.com/node_5.x vivid main
至
deb https://deb.nodesource.com/node_4.x vivid main
deb-src https://deb.nodesource.com/node_4.x vivid main
再次更新回购协议
sudo apt-get update
并重新安装节点
sudo apt-get install -y nodejs
检查应该写类似 v4.3.1 或 v4.x.x
的版本
node -v
现在您可以 运行 angular 快速入门:
npm start
希望有用。
编辑:安装 4.x 版本的 NodeJS
后
在您的应用所在的文件夹中:
$ rm -r node_modules
然后
npm install
看起来很愚蠢,但是当你 运行 npm install 它必须编译某些模块,并且可能(我不知道)编译它们的方式随着 NodeJS 版本的变化而变化。
我遇到了同样的错误,我可以在 ubuntu 中通过后续步骤解决它:
编辑文件 /etc/sysctl.conf
并添加下一行:
fs.inotify.max_user_watches = 524288
保存文件并输入:
sudo sysctl -p
然后重试 运行 npm start。 :)
我无法在 Ubuntu 14.04 上使用 npm 启动 lite-server 2.1.0。我正在尝试 运行 Angular2 快速入门示例。
此问题可能是 Linux 特有的,并且仅在最近更新 Ubuntu 后才开始出现。我能够在 Windows 8.1 上成功 运行 Angular2 快速入门。我尝试了各种不同版本的 NPM 和 Node,结果没有任何变化。 运行 Angular Heroes 示例也因同样的问题而失败。
任何解决方案或临时解决方法将不胜感激。
成功将 typescript 转译为 javascript 后,这是尝试通过 npm 启动 lite-server 的结果:
npm run lite
events.js:154
throw er; // Unhandled 'error' event
^
Error: watch node_modules/insight/node_modules/lodash/internal/baseForOwnRight.js ENOSPC
at exports._errnoException (util.js:856:11)
at FSWatcher.start (fs.js:1313:19)
at Object.fs.watch (fs.js:1341:11)
at createFsWatchInstance (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:37:15)
at setFsWatchListener (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:80:15)
at FSWatcher.NodeFsHandler._watchWithNodeFs (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:228:14)
at FSWatcher.NodeFsHandler._handleFile (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:255:21)
at FSWatcher.<anonymous> (/tf/sbtf/ang2-reg/node_modules/chokidar/lib/nodefs-handler.js:473:21)
at FSReqWrap.oncomplete (fs.js:82:15)
npm ERR! Linux 3.19.0-49-generic
npm ERR! argv "/tf/node/bin/node" "/tf/node/bin/npm" "run" "lite"
npm ERR! node v5.6.0
npm ERR! npm v3.7.2
npm ERR! code ELIFECYCLE
npm ERR! ang2-reg@1.0.0 lite: `lite-server`
npm ERR! Exit status 1
这是 package.json。我确实将 lite-server 升级到 2.1.0 以查看是否有帮助,但没有帮助。
{
"name": "ang2-reg",
"version": "1.0.0",
"scripts": {
"postinstall": "npm run typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",
"typings" : "typings"
},
"license": "ISC",
"dependencies": {
"angular2": "2.0.0-beta.6",
"bootstrap": "^3.3.6",
"systemjs": "0.19.20",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"systemjs": "0.19.17",
"zone.js": "0.5.14"
},
"devDependencies": {
"concurrently": "^1.0.0",
"lite-server": "^2.1.0",
"typescript": "^1.8.0",
"typings":"^0.6.8"
}
}
这是打字稿配置:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
这是来自 npm-debug.log 的错误消息部分:
10 verbose lifecycle ang2-reg@1.0.0~lite: CWD: /tf/sbtf/ang2-reg
11 silly lifecycle ang2-reg@1.0.0~lite: Args: [ '-c', 'lite-server' ]
12 silly lifecycle ang2-reg@1.0.0~lite: Returned: code: 1 signal: null
13 info lifecycle ang2-reg@1.0.0~lite: Failed to exec lite script
14 verbose stack Error: ang2-reg@1.0.0 lite: `lite-server`
14 verbose stack Exit status 1
14 verbose stack at EventEmitter.<anonymous>
(/tf/node/lib/node_modules/npm/lib/utils/lifecycle.js:239:16)
14 verbose stack at emitTwo (events.js:100:13)
14 verbose stack at EventEmitter.emit (events.js:185:7)
14 verbose stack at ChildProcess.<anonymous>
(/tf/node/lib/node_modules/npm/lib/utils/spawn.js:24:14)
14 verbose stack at emitTwo (events.js:100:13)
14 verbose stack at ChildProcess.emit (events.js:185:7)
14 verbose stack at maybeClose (internal/child_process.js:827:16)
14 verbose stack at Process.ChildProcess._handle.onexit
(internal/child_process.js:211:5)
15 verbose pkgid ang2-reg@1.0.0
16 verbose cwd /tf/sbtf/ang2-reg
17 error Linux 3.19.0-49-generic
18 error argv "/tf/node/bin/node" "/tf/node/bin/npm" "run" "lite"
19 error node v5.6.0
20 error npm v3.7.2
21 error code ELIFECYCLE
22 error ang2-reg@1.0.0 lite: `lite-server`
22 error Exit status 1
如果您正在寻找解决方法,建议使用 NodeJS 的 版本 4.x。
移除 NodeJS 5.x
sudo apt-get remove nodejs
编辑源列表以在 repo
中启用节点 4.xsudo nano /etc/apt/sources.list.d/nodesource.list
然后在文件中编辑两行:
deb https://deb.nodesource.com/node_5.x vivid main
deb-src https://deb.nodesource.com/node_5.x vivid main
至
deb https://deb.nodesource.com/node_4.x vivid main
deb-src https://deb.nodesource.com/node_4.x vivid main
再次更新回购协议
sudo apt-get update
并重新安装节点
sudo apt-get install -y nodejs
检查应该写类似 v4.3.1 或 v4.x.x
的版本node -v
现在您可以 运行 angular 快速入门:
npm start
希望有用。
编辑:安装 4.x 版本的 NodeJS
后在您的应用所在的文件夹中:
$ rm -r node_modules
然后
npm install
看起来很愚蠢,但是当你 运行 npm install 它必须编译某些模块,并且可能(我不知道)编译它们的方式随着 NodeJS 版本的变化而变化。
我遇到了同样的错误,我可以在 ubuntu 中通过后续步骤解决它:
编辑文件 /etc/sysctl.conf
并添加下一行:
fs.inotify.max_user_watches = 524288
保存文件并输入:
sudo sysctl -p
然后重试 运行 npm start。 :)