最小化的奇怪崩溃 - 尽管ng-strict-di很高兴。为什么呢?

时间:2016-05-15 21:28:52

标签: angularjs yeoman

我的代码最初加载时,我发现Chrome和Firefox出现了一次奇怪的崩溃:

Uncaught TypeError: angular.module(...).constant(...).constant(...).factory(...).factory(...).factory(...).directive(...) is not a function

接下来我看到一个可疑的:

ReferenceError: io is not defined in my socket factory
angular.module("xxx").factory("socket", ...)
when it attempts to access io at the line containing: 
var ioSocket = io("", {
    path: "/socket.io-client"
})

注意:在运行非最小化版本的代码时,我只看到此崩溃。 这个项目最初是由yeoman angular-fullstack生成的。此外,我不相信第二个错误与导入socket.io/socket.io.js有关 - 只是第一个错误的工件。

注意:

grunt serve

正常,但

grunt serve:dist

展示了上面的崩溃。

我原本以为我有一个依赖注入问题,因此我启用了指令 ng-strict-di ,并且能够执行grunt服务而没有任何错误。所以这似乎表明grunt服务的失败:dist不是注射问题,尽管我确实使用了很多包。

您能否建议对yeoman设置进行一些修改,这些修改可能有助于确定构建过程中破坏代码的原因。

grunt serve:dist

基本上补充说:

concat, uglify, cssmin, and cdnigy

我已经将uglify设置为不使用选项:mangle:false。

我已经和我斗争了三天,但我还没有取得多大进展。如果您有任何想法,我会非常感激! 谢谢!

我正在运行节点v4.4.4。 package.json文件是:

    {
  "name": "tracker2",
  "version": "1.0.0",
  "main": "server/app.js",
  "dependencies": {
    "JSONStream": "^1.1.1",
    "acorn": "^3.1.0",
    "assert": "^1.3.0",
    "aws-sdk": "^2.3.11",
    "base64-stream": "^0.1.3",
    "bcryptjs": "^2.3.0",
    "bluebird": "^3.3.5",
    "body-parser": "^1.15.1",
    "bson": "^0.4.23",
    "bson-objectid": "^1.1.4",
    "codemirror": "^5.14.2",
    "composable-middleware": "^0.3.0",
    "compression": "^1.6.2",
    "connect-mongo": "^1.1.0",
    "connect-multiparty": "^2.0.0",
    "cookie-parser": "^1.4.1",
    "ejs": "^2.4.1",
    "errorhandler": "^1.4.3",
    "exectimer": "^2.0.0",
    "express": "^4.13.4",
    "express-handlebars": "^3.0.0",
    "express-jwt": "^3.4.0",
    "express-session": "^1.13.0",
    "extend": "^3.0.0",
    "gc-stats": "https://registry.npmjs.org/gc-stats/-/gc-stats-0.0.6.tgz",
    "github": "^0.2.4",
    "github-api": "^1.2.1",
    "heapdump": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz",
    "html2plaintext": "^1.0.1",
    "htmlparser": "^1.7.7",
    "htmlparser2": "^3.9.0",
    "ical-generator": "^0.2.7",
    "js-json": "^0.1.4",
    "jsonwebtoken": "^6.2.0",
    "jws": "^3.1.3",
    "jwt-decode": "^2.0.1",
    "lodash": "^4.12.0",
    "method-override": "~2.3.3",
    "mime-types": "^2.1.11",
    "mocha": "^2.4.5",
    "moment": "https://registry.npmjs.org/moment/-/moment-2.10.6.tgz",
    "moment-timezone": "^0.5.4",
    "mongodb": "^1.4.40",
    "mongoose": "^4.4.14",
    "mongoskin": "^1.4.13",
    "monk": "^1.0.1",
    "morgan": "^1.7.0",
    "ng-file-upload": "^12.0.4",
    "nodemailer": "^2.4.1",
    "nodemailer-sendgrid-transport": "^0.2.0",
    "nodemailer-sendmail-transport": "^1.0.0",
    "passport": "^0.3.2",
    "passport-facebook": "latest",
    "passport-github": "^1.1.0",
    "passport-github2": "^0.1.10",
    "passport-google-oauth": "latest",
    "passport-local": "~1.0.0",
    "passport-twitter": "latest",
    "phantomjs-prebuilt": "^2.1.7",
    "q": "^1.4.1",
    "random-id": "0.0.2",
    "rekuire": "^0.1.9",
    "request": "^2.72.0",
    "serve-favicon": "^2.3.0",
    "sessionstore": "^1.2.13",
    "shrinkwrap": "^0.4.0",
    "socket.io": "^1.4.6",
    "socket.io-client": "^1.4.0",
    "socketio-jwt": "^4.3.4",
    "sprintf-js": "^1.0.2",
    "ssl-root-cas": "^1.1.10",
    "tmp": "0.0.28",
    "tracer": "^0.8.3",
    "uri.js": "^0.1.3",
    "uuid": "^2.0.2",
    "xmldom": "^0.1.22"
  },
  "devDependencies": {
    "connect-livereload": "^0.5.4",
    "grunt": "^1.0.1",
    "grunt-angular-templates": "^1.0.3",
    "grunt-asset-injector": "^0.1.0",
    "grunt-autoprefixer": "^3.0.4",
    "grunt-build-control": "DaftMonk/grunt-build-control",
    "grunt-concurrent": "^2.3.0",
    "grunt-contrib-clean": "^1.0.0",
    "grunt-contrib-concat": "^1.0.1",
    "grunt-contrib-copy": "^1.0.0",
    "grunt-contrib-cssmin": "^1.0.1",
    "grunt-contrib-htmlmin": "^1.4.0",
    "grunt-contrib-imagemin": "^1.0.0",
    "grunt-contrib-jshint": "^1.0.0",
    "grunt-contrib-sass": "^1.0.0",
    "grunt-contrib-uglify": "^1.0.1",
    "grunt-contrib-watch": "^1.0.0",
    "grunt-dom-munger": "^3.4.0",
    "grunt-env": "~0.4.4",
    "grunt-express-server": "^0.5.3",
    "grunt-google-cdn": "~0.4.3",
    "grunt-karma": "^1.0.0",
    "grunt-mocha-test": "~0.12.7",
    "grunt-newer": "^1.2.0",
    "grunt-ng-annotate": "^2.0.2",
    "grunt-node-inspector": "^0.4.1",
    "grunt-nodemon": "^0.4.2",
    "grunt-open": "~0.2.3",
    "grunt-protractor-runner": "^3.1.0",
    "grunt-rev": "~0.1.0",
    "grunt-svgmin": "^3.2.0",
    "grunt-usemin": "^3.1.1",
    "grunt-wiredep": "^2.0.0",
    "jit-grunt": "^0.10.0",
    "jshint-stylish": "^2.2.0",
    "karma": "^0.13.22",
    "karma-chrome-launcher": "^1.0.1",
    "karma-coffee-preprocessor": "^1.0.0",
    "karma-firefox-launcher": "^1.0.0",
    "karma-html2js-preprocessor": "^1.0.0",
    "karma-jade-preprocessor": "0.0.11",
    "karma-jasmine": "^1.0.2",
    "karma-ng-html2js-preprocessor": "^1.0.0",
    "karma-ng-jade2js-preprocessor": "^0.2.1",
    "karma-ng-scenario": "^1.0.0",
    "karma-phantomjs-launcher": "^1.0.0",
    "karma-requirejs": "^1.0.0",
    "karma-script-launcher": "^1.0.0",
    "open": "~0.0.5",
    "requirejs": "^2.2.0",
    "should": "^8.3.1",
    "supertest": "^1.2.0",
    "time-grunt": "^1.3.0"
  },
  "engines": {
    "node": ">=0.10.0"
  },
  "scripts": {
    "start": "node server/app.js",
    "test": "grunt test",
    "update-webdriver": "node node_modules/grunt-protractor-runner/node_modules$
  },
  "private": true
}

1 个答案:

答案 0 :(得分:0)

这个很难找到。事实证明,如果缺少'那么最小化就会破坏代码。 SEMI-COLON在.directive文件的末尾。我发现angular-timezone-selector.js需要有一个&#39 ;;'添加在文件的末尾。现在一切都按预期工作了!

我希望这有助于某人: 密钥:检查所有您的bower组件 * .js文件以&#39 ;;'结尾。需要的地方。

相关问题