Angular只有在我指定app.get时才有效(" *" [...]);在我的server.js中

时间:2018-04-30 21:51:55

标签: javascript node.js angular typescript express

我只是用服务器端JavaScript开发,这是我的第一个项目。

它是我自己的云服务器的命令和控制服务器,使用angular,Expressjs和bootstrap运行。目前我在添加停止服务器按钮的功能时遇到了麻烦。

应该通过ssh登录服务器并执行所有必要的操作以正常关闭它。

问题是,我真的不能(也不想)通过浏览器脚本添加这个,因为我想使用ssh库。根据按钮运行服务器端脚本似乎根本不可能(请告诉我如果它是如何,这将是我所有问题的解决方案:))。

所以我想我可以将用户重定向到/on页面,因为他点击按钮并在app.get回调函数中执行操作。这就是问题:在我的server.js(主节点服务器)中,我有"两个"目前定义的端点

app.get("*", (req, res) =>{
  res.sendFile(path.join(__dirname, "src/index.html"));
});

app.get("/on", (req, res) =>{
  console.log("redirecting...");
  //DO SOMETHING
  res.redirect("/");
});

在第二个我想执行ssh动作。 但是当我将第一个代码块更改为(注意/而不是*)

app.get("/", (req, res) =>{
  res.sendFile(path.join(__dirname, "src/index.html"));
});

整个应用程序似乎不再具有角度。所有角度组件都会显示,但它们只是空的,并且没有填充我在app.component.html中定义的内容。为什么会发生这种情况?我该如何解决这个问题?感谢您的任何帮助 ;) PS:您可以在GitHub

找到所有代码

1 个答案:

答案 0 :(得分:0)

您最好做多件事,但为了保持答案简短,您只需要进行一些更改,这样就可以启动并运行,首先,app.get("*", ...)重定向到每个代码块,所以你需要这样做:

//Parsers
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

//Angular DIST output folder
app.use(express.static(path.join(__dirname, "dist")));


app.get("/", (req, res) =>{
  res.sendFile(path.join(__dirname, "dist/index.html"));
});

app.get("/on", (req, res) =>{
  console.log("redirecting...");
  //DO SOMETHING
  res.redirect("/");
});

注意一个更改,你不想调用src / index,你想构建angular to dist文件夹并使用index.html,第二个,路由" /"将重定向到主页," / on"现在将进入所需的端点。如果这几乎是你想用端点做的一切,我想这很好,但如果你想构建更复杂的东西,我会抽象出来。希望这会有所帮助,干杯。 breakpoint was on line 21 and it entered as soon as i did the localhost:3000/on