gpt4 book ai didi

javascript - 使用 Node Js 服务器运行 Angular2 应用程序

转载 作者:太空狗 更新时间:2023-10-29 17:38:32 28 4
gpt4 key购买 nike

我正在开始一个使用 Angular2(客户端)和 Node JS(服务器端)技术的新项目。

我已经成功地使用 nodeexpress 创建了一个 RESTful API。输入特定 URL 时,将显示匹配的 Json 响应。到目前为止一切顺利。

现在我正在尝试将 Angular 2 集成到流程中。我已经创建了 app.component。当页面显示时,组件未加载,我得到了一些 404 代码:

Failed to load resource: 404 (not found) http://localhost:3000/node_modules/core-js/client/shim.min.js
...
Failed to load resource: 404 (not found) http://localhost:3000/systemjs.config.js

这是我的项目结构:

├── App
| └── app.component.ts //copied from Angular2/get-started
| └── main.ts // copied from Angular2/get-started
├── dist //contains generated JS files
├── node_modules
├── server // contains Server Typescript files
├── index.html // copied from Angular2/get-started
├── index.ts // server entry point
├── package.json
├── systemjs.config.js
├── tsconfig.json
├── typings.json

我的 package.json:

{
"main": "index.js",
"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"node dist/js/index.js\" ",
"postinstall": "typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"typings": "typings"
},
"dependencies": {

"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"@angular/upgrade": "2.0.0-rc.1",

"systemjs": "0.19.27",
"core-js": "^2.4.0",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12",
"angular2-in-memory-web-api": "0.0.11",
"bootstrap": "^3.3.6",

"express": "^4.13.4",
"mysql": "^2.5.4"
},
"devDependencies": {
"concurrently": "^2.0.0",
"typescript": "^1.8.10",
"typings": "^1.0.4"
}
}

还有我的 index.ts(服务器):

var express = require('express');
var app = express();
var path = require('path');

var __projectRoot = __dirname + '/../../';

app.get('/', function (req, res) {
res.sendFile(path.join(__projectRoot + '/index.html'));
});

console.log('Server up and running on http://localhost:3000/');
app.listen(server_port);

总而言之,index.html:

<html>
<head>
<script>document.write('<base href="' + document.location + '" />');</script>
<title>Angular 2 QuickStart</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 1. Load libraries -->
<!-- Polyfill(s) for older browsers -->
<script src="node_modules/core-js/client/shim.min.js"></script>
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<!-- 2. Configure SystemJS -->
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function (err) {
console.error(err);
});
</script>
</head>
<!-- 3. Display the application -->
<body>
<h1>index.html</h1>
<my-app>Loading...</my-app>
</body>
</html>

加载时http://localhost:3000/ ,我看到“Index.html Loading...”但未显示该组件。

在 Angular2 官方网站上,他们使用了 lite-server 依赖。我想我的服务器有问题,但我不知道如何让它工作。或者有没有办法使用 Expresslite-server 来实现 RESTful API?

最佳答案

您忘记添加一个中间件功能来提供静态文件,如 js 库和 css。在 app.get("/", ...) 之前添加这一行应该有效:

app.use(express.static(__projectRoot));

关于javascript - 使用 Node Js 服务器运行 Angular2 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773899/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com