带有快速

时间:2016-09-23 03:09:00

标签: node.js web-services express angular angular-cli

好吧所以我使用webpack捆绑/构建了一个常规的角度cli项目prod,然后获取dist文件夹的内容并将它们放入另一个快速安装的项目中。
代码:

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

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

app.listen(3000, function() {
    console.log('Example app listening on port 3000!');
});

问题在于,当我运行这个时,我得到一个" loading ..."打开时的页面:// localhost:3000 /并且没有别的。当我检查控制台时,我收到了这些错误

[无法加载资源:服务器响应状态为404(未找到):// localhost:3000 / inline.js
无法加载资源:服务器响应状态为404(未找到):// localhost:3000 / styles.b52d2076048963e7cbfd.bundle.js
无法加载资源:服务器响应状态为404(未找到):// localhost:3000 / main.d27eab344e583f765067.bundle.js
无法加载资源:服务器响应状态为404(未找到):// localhost:3000 / styles.b52d2076048963e7cbfd.bundle.js
无法加载资源:服务器响应状态为404(未找到):// localhost:3000 / main.d27eab344e583f765067.bundle.js]

任何人都可以解决这个问题或找出问题所在?任何帮助是极大的赞赏。我这样做的原因是,一旦应用程序投入生产,我就无法访问" npm"所以我没有任何ang-cli命令,只有节点命令。实现套接字IO也是我们走捷径的另一个原因。如果有其他替代方式,请告诉我。

感谢

2 个答案:

答案 0 :(得分:0)

您需要提供其余的静态文件,因为您现在只发送index.html。

将您的角度应用程序放在某个目录中,例如public,并执行以下操作:

app.use(express.static('public'));
app.get('/', function(req, res) {
  res.sendFile(__dirname + '/public' + 'index.html')
});

答案 1 :(得分:0)

我发现这个问题的解决方案是将2个组件放在单独的目录中,并以这种方式构建它们(不要忘记每次更改到comp。目录):

ng build --base-href /first/dist
ng build --base-href /second/dist

然后你将两个组件放在两个不同的目录中

快递:

app.use(
    '/first',
    express.static(
        path.join(__dirname,'first', 'dist')
    )
);

app.use(
    '/second',
    express.static(
        path.join(__dirname,'second', 'dist')
    )
);

他们应该是一个更好的解决方案,但我还没有找到它

希望有所帮助

Gregoire - 你可以在www.agenda.tools

找到工作网站