Node-Express-Angular,为什么不加载JS



我和那些家伙成功地构建了一个堆栈。它是一个与Oracle数据库交互的表单。

现在我正在添加身份验证,要求使用nodejs的"client-OAuth2"模块将其添加到OAuth2服务器。这是Node.js:中的代码

requireLogin = function (req, res, next) {
    var uri=ServAuth.code.getUri();
    res.redirect(uri);
};
app.get('/auth/callback', function (req, res) {
        ServAuth.code.getToken(req.url)
        .then(function (user) {
                console.log(user); //=> { accessToken: '...', tokenType: 'bearer', ... }
                user.request({
                    method: 'get',
                    url: 'https://aut.server.blabla.bla/api/Me'
                }).then(function (res) {
                    res.body.forEach(function (item){
                        if (item.Type=="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name") {
                                logged_user=item.Value;
                        }
                    });
                  })
                  return res.sendFile(path.resolve(__dirname + '/../public/form.html')); // load the single view file (angular will handle the page changes on the front-end)
        });
});

app.use('/form', requireLogin);

如果我调用"myserver.bla/form",我会被正确地重定向到OAuth2服务器的登录页面;然后我登录并授予访问权限。然后加载页面"form.html",但我在浏览器控制台中看到错误:

错误:[$injector:modulerr]无法实例化模块NSW_PCB_QC,原因是:[$injector:nomod]模块'NSW_PCB_QC'不可用!

请注意,NSW_PCB_QC是角度应用程序的名称(ng app="NSW_PCB _QC")。

但是,如果我绕过身份验证,直接加载form.html,调用"myserver.bla/form.html",那么所有角度模块都会正确加载。

问题出在哪里?

提前感谢

问题是js脚本中的相对路径指向不同的位置,这取决于文件的服务方式。修复方法是通过在路径前面添加一个/来从同一位置根除路径,使其看起来像

<script src="js/services/services.js"></script>

应该看起来像

<script src="/js/services/services.js"></script>

最新更新