Angular2 QuickStart npm start is not working correctly. Angular2 QuickStart的npm start功能无法正常工作。
Angular2 QuickStart npm start is not working correctly. Angular2 QuickStart的npm start功能无法正常工作。
我知道Angular2 beta刚刚发布,但我无法复制他们官方网站教程(https://angular.io/guide/quickstart)上的步骤。也许有人遇到过类似的问题并知道如何解决?当我尝试使用npm start命令启动应用程序时,我会得到如下输出:
0 info it worked if it ends with ok
1 verbose cli [ 'node', '/usr/local/bin/npm', 'start' ]
2 info using npm@2.7.4
3 info using node@v0.12.2
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info prestart angular2-quickstart@1.0.0
6 info start angular2-quickstart@1.0.0
7 verbose unsafe-perm in lifecycle true
8 info angular2-quickstart@1.0.0 Failed to exec start script
9 verbose stack Error: angular2-quickstart@1.0.0 start: `concurrent "npm run tsc:w" "npm run lite" `
9 verbose stack Exit status 127
9 verbose stack at EventEmitter.
9 verbose stack at EventEmitter.emit (events.js:110:17)
9 verbose stack at ChildProcess.
9 verbose stack at ChildProcess.emit (events.js:110:17)
9 verbose stack at maybeClose (child_process.js:1015:16)
9 verbose stack at Process.ChildProcess._handle.onexit (child_process.js:1087:5)
10 verbose pkgid angular2-quickstart@1.0.0
11 verbose cwd /Users/tmrovsky/Documents/angular2/angular2-quickstart
12 error Darwin 13.4.0
13 error argv "node" "/usr/local/bin/npm" "start"
14 error node v0.12.2
15 error npm v2.7.4
16 error code ELIFECYCLE
17 error angular2-quickstart@1.0.0 start: `concurrent "npm run tsc:w" "npm run lite" `
17 error Exit status 127
18 error Failed at the angular2-quickstart@1.0.0 start script 'concurrent "npm run tsc:w" "npm run lite" '.
18 error This is most likely a problem with the angular2-quickstart package,
18 error not with npm itself.
18 error Tell the author that this fails on your system:
18 error concurrent "npm run tsc:w" "npm run lite"
18 error You can get their info via:
18 error npm owner ls angular2-quickstart
18 error There is likely additional logging output above.
19 verbose exit [ 1, true ]
我使用的是:
typescript 1.7.5版本
node 0.12.2版本
也许有人可以帮助解决这个问题 🙂 ?
package.json:
{
"name": "angular2-quickstart",
"version": "1.0.0",
"scripts": {
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
},
"license": "ISC",
"dependencies": {
"angular2": "2.0.0-beta.0",
"systemjs": "0.19.6",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"zone.js": "0.5.10"
},
"devDependencies": {
"concurrently": "^1.0.0",
"lite-server": "^1.3.1",
"typescript": "^1.7.3"
}
}
index.html:
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/boot')
.then(null, console.error.bind(console));
app.components.ts:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '
My First Angular 2 App
',
})
export class AppComponent {}
boot.js:
import {bootstrap} from 'angular2/platform/browser'
import {AppComponent} from './app.component'
bootstrap(AppComponent);
Angular2 QuickStart中的npm start命令无法正确运行的问题可能是由于以下原因引起的:
首先需要更新npm、lite-server和typescript:
sudo npm update -g && sudo npm install -g concurrently lite-server typescript
从Angular项目目录中删除node_modules文件夹(如果存在)。然后运行:
npm install
然后解决ENOSPC错误:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
最后运行:
npm start
这是我的package.json文件:
{ "name": "reservationsystem", "version": "0.0.1", "scripts": { "tsc": "tsc", "tsc:w": "tsc -w", "lite": "lite-server", "start": "concurrent \"npm run tsc:w\" \"npm run lite\" " }, "dependencies": { "a2-in-memory-web-api": "~0.1.0", "angular2": "2.0.0-beta.3", "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.11" }, "devDependencies": { "concurrently": "^1.0.0", "lite-server": "^2.0.1", "typescript": "^1.7.5" } }
我点赞是因为这个解决了我的问题。然而,我想了解如何通过将fs.inotify.max_user_watches添加到/etc/sysctl.conf中来解决问题。
似乎观察者需要更多的内存,而这提供了这个内存。
我发现,当我首先删除模块时,它似乎工作得更好--`rm -r node_modules/`。无论如何,正如作者所说,这让我能够继续进行;但是我认为`fs.inotify.max_user_watches=524288`对我来说似乎有点过多。难道这是一个更好的选择吗?
值得一提的是,JavaScript快速入门可以直接运行,无需添加额外的内容。当服务器停止时,网页仍然保留在屏幕上。而TypeScript版本则会在404错误后消失。这真的帮了我大忙,谢谢你。`echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p`
原因:在使用npm start
命令时,出现了问题。解决方法是确保已全局安装了一些devDependencies,包括concurrently
、lite-server
和typescript
。
解决方法:首先,尝试运行以下命令:
npm install -g concurrently
npm install -g lite-server
npm install -g typescript
其中,lite-server
是可选的,也可以使用其他服务替代。
如果上述方法不起作用,可以尝试以下命令:
sudo npm update -g && sudo npm install -g concurrently lite-server typescript
还需要记得卸载本地版本的lite-server
:
npm uninstall lite-server
这些方法已经成功解决了一些用户在使用npm start
命令时遇到的问题。但也有一些用户反馈说,上述方法并没有起作用,他们仍然遇到了npm ERR! undefined prepublish: gulp prepublish
的错误。对于这种情况,可能需要进一步排查其他问题。
不过,全局安装这些devDependencies的目的是确保npm start
命令正常运行。
问题出现的原因是在package.json文件中的start字段中运行了两次tsc命令,即"start": "tsc & concurrently "npm run tsc:w" "npm run lite" "。解决方法是将start字段中的tsc命令删除一次,即修改为"start": "concurrently "npm run tsc:w" "npm run lite" "。
为什么要运行两次tsc命令(tsc和tsc -w)呢?在Pluralsight的"play by play angular 2 quick start"课程中,Ward Bell解释了这个问题。"tsc"先编译代码,因为在较大的项目中,如果没有这一步,可能会导致服务器在编译结束之前启动。在这种情况下,服务器会抛出错误,指示不知道该做什么。
在2017年,你在答案中的解决方法揭示了真正的问题,即在应用代码的TypeScript中存在编译错误。当我修复了编译错误后,原始版本就可以正常工作了,不再需要你的解决方法。
很好... "start": "concurrently "npm run tsc:w" "npm run lite" " 对我有用...