javascript - 导入外部脚本时出现 404

标签 javascript angularjs

我正在尝试将 Angular 模块作为一个单独的文件包含在内。

这是我的app.js

var app = angular.module('app', ['ngRoute']);
app.controller("TodoController", function($scope) {
  $scope.players = ["Tom", "Dick", "Harry"];
});

这是我的index.html

<html ng-app="app">
    <head>
        <title>Hello Angular!</title>
    </head>
    <body ng-controller="TodoController">
        <input type="text" name="" ng-model="name"> {{name}}

        <ul>
            <li ng-repeat="player in players">
            {{ player }}
            </li>
        </ul>

        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular-route.min.js"></script>
        <script src="scripts/app.js"></script>
    </body>
</html>

我正在将 express 与节点一起使用。这是我的server.js

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

var port = process.env.PORT || 5000;

app.get('/', function(req, res){
  //res.sendfile('./index.html');
  res.sendFile('index.html', { root: path.join(__dirname) });
});

app.listen(port);
console.log('Express app is listening on : ' + port);

当我尝试执行时,我得到了 http://localhost:5000/scripts/app.js 404(未找到)

当所有内容都放入 index.html 时,代码运行良好。

文件结构是这样的

-- index.html
-- server.js
-- scripts
    -- app.js 

最佳答案

我找到了解决方案。正如评论中提到的,问题在于在 Express 中提供静态文件。我已将这段代码包含到 server.js 中。

app.use(express.static('public'))

我还创建了 public 文件夹并将 app.js 包含到 public 文件夹中。

我的新代码如下所示。

public/index.html

<html ng-app='app'>
    <head>
        <title>Hello Angular!</title>
    </head>
    <body ng-controller="TodoController">
        <input type="text" name="" ng-model="name"> {{name}}

        <ul>
            <li ng-repeat="todo in todos">
                <input type="checkbox" ng-model="todo.completed">
                {{todo.title}}
            </li>
        </ul>

        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular-route.min.js"></script>
        <script type='text/javascript' src="app.js" charset="UTF-8"></script>
        <script type='text/javascript' src="app/controllers/TodoController.js" charset="UTF-8"></script>
    </body>
</html>

Server.js

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

var port = process.env.PORT || 5000;

app.get('/', function(req, res){
  res.sendFile('index.html', { root: path.join(__dirname, 'public') });
});

app.use(express.static(path.join(__dirname, 'public')));

app.listen(port);
console.log('Express app is listening on : ' + port);

public/controllers/TodoController.js

app.controller('TodoController', ['$scope', function ($scope) {
    $scope.todos = [
    { title: 'Learn Javascript', completed: true },
    { title: 'Learn Angular.js', completed: false },
    { title: 'Love this tutorial', completed: true },
    { title: 'Learn Javascript design patterns', completed: false },
    { title: 'Build Node.js backend', completed: false },
    ];
}]);

public/app.js

var app = angular.module('app', []);

新的文件结构将是这样的。

-- public
  -- app
    -- controllers
      -- TodoController.js
  -- app.js
  -- index.html
-- server.js
-- package.json

关于javascript - 导入外部脚本时出现 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45027520/

相关文章:

javascript - HTML 按钮在 $compile 后显示为文本

javascript - 您可以更改 javascript 错误事件消息的语言吗?

javascript - JSP通过href调用javascript函数

javascript - js 段函数不再工作

javascript - angularjs:我可以合并这项服务吗?

javascript - ng-sortable 在表上。当我拖动一行时,CSS 被抛出

javascript - 为什么这个模拟 api 不能按预期工作?

javascript - 如何删除动态内容底部的空间?

javascript - Angular 两次渲染主视图而不是加载正确的模板

angularjs - 带参数的温泉 ui 导航