Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: Cannot read property 'use' of undefined #450

Closed
myfreax opened this issue Feb 24, 2017 · 17 comments
Closed

TypeError: Cannot read property 'use' of undefined #450

myfreax opened this issue Feb 24, 2017 · 17 comments

Comments

@myfreax
Copy link
Contributor

myfreax commented Feb 24, 2017

  • Node Version: 6.10.0
  • Egg Version: 1.0.0-rc.1
  • Plugin Name:
  • Plugin Version:
  • Platform: Linux

app.js

module.exports = app => {
 	app.view.use('handlebars', require('./lib/view'));
};

执行yarn test

  1) test/egg-view-handlebars.test.js render "before all" hook:
     TypeError: Cannot read property 'use' of undefined
      at module.exports.app (app.js:8:11)
      at AppWorkerLoader.loadFile (node_modules/egg-core/lib/loader/egg_loader.js:217:34)
      at getLoadUnits.forEach.unit (node_modules/egg-core/lib/loader/mixin/custom.js:25:29)
      at Array.forEach (native)
      at AppWorkerLoader.loadCustomApp (node_modules/egg-core/lib/loader/mixin/custom.js:25:8)
      at AppWorkerLoader.load (node_modules/egg/lib/loader/app_worker_loader.js:33:10)
      at MeesengerApplication.Application (node_modules/egg/lib/application.js:34:19)
      at MeesengerApplication (node_modules/egg-mock/lib/app.js:221:7)
      at MockApplication.[init] (node_modules/egg-mock/lib/app.js:67:29)
      at undefined.next (native)
      at onFulfilled (node_modules/co/index.js:65:19)
      at process._tickCallback (internal/process/next_tick.js:103:7)

怎么解决这个问题

@popomore
Copy link
Member

1.0.0-rc.1 中 egg-view 应该是默认开启的,如果你用 yarn 先检查下依赖是否更新

@myfreax
Copy link
Contributor Author

myfreax commented Feb 24, 2017

@popomore yarn upgrade 后还是一样的问题

@popomore
Copy link
Member

popomore commented Feb 24, 2017

恩,先确定版本看,去 node_modules 找下 egg 的 package.json

@dead-horse
Copy link
Member

@huangyanxiong01 将 ${baseDir}/run/application_config.js 贴上来,让我们看一下依赖的版本。

@myfreax
Copy link
Contributor Author

myfreax commented Feb 25, 2017

@popomore

{
  "name": "egg",
  "version": "1.0.0-rc.1",
  "description": "A web framework's framework for Node.js",
  "keywords": [
    "web",
    "app",
    "http",
    "application",
    "framework",
    "middleware",
    "koa",
    "egg"
  ],
  "dependencies": {
    "accepts": "^1.3.3",
    "agentkeepalive": "^3.1.0",
    "cluster-client": "^1.3.0",
    "co": "^4.6.0",
    "debug": "^2.6.1",
    "delegates": "^1.0.0",
    "egg-cluster": "^1.5.0",
    "egg-cookies": "^2.2.0",
    "egg-core": "^2.1.1",
    "egg-development": "^1.2.0",
    "egg-i18n": "^1.1.0",
    "egg-jsonp": "^1.0.0",
    "egg-logger": "^1.5.0",
    "egg-logrotator": "^2.2.2",
    "egg-multipart": "^1.1.0",
    "egg-onerror": "^1.3.0",
    "egg-schedule": "^2.3.0",
    "egg-security": "^1.6.0",
    "egg-session": "^1.1.0",
    "egg-static": "^1.2.0",
    "egg-userrole": "^1.1.1",
    "egg-userservice": "^1.0.0",
    "egg-validate": "^1.0.0",
    "egg-view": "^1.0.0",
    "egg-watcher": "^2.1.0",
    "graceful": "^1.0.1",
    "is-type-of": "^1.0.0",
    "koa-bodyparser": "^2.3.0",
    "koa-is-json": "^1.0.0",
    "mime-types": "^2.1.14",
    "sendmessage": "^1.1.0",
    "urllib": "^2.20.0",
    "utility": "^1.11.0"
  },
  "devDependencies": {
    "autod": "^2.7.1",
    "autod-egg": "^1.0.0",
    "coffee": "^3.3.0",
    "egg-alinode": "^1.0.3",
    "egg-bin": "^2.2.1",
    "egg-mock": "^3.0.1",
    "egg-plugin-puml": "^1.0.0",
    "egg-view-nunjucks": "^2.0.0",
    "eslint": "^3.16.0",
    "eslint-config-egg": "^3.2.0",
    "formstream": "^1.1.0",
    "gh-pages": "^0.12.0",
    "glob": "^7.1.1",
    "jsdoc": "^3.4.3",
    "ko-sleep": "^1.0.2",
    "merge-descriptors": "^1.0.1",
    "moment": "^2.17.1",
    "mz": "^2.6.0",
    "mz-modules": "^1.0.0",
    "once": "^1.3.3",
    "pedding": "^1.1.0",
    "rds": "^0.1.0",
    "rimraf": "^2.6.0",
    "runscript": "^1.2.0",
    "should": "^11.2.0",
    "supertest": "^3.0.0",
    "taffydb": "^2.7.3"
  },
  "main": "index.js",
  "files": [
    "app",
    "config",
    "bin",
    "lib",
    "index.js"
  ],
  "scripts": {
    "lint": "eslint app config lib test *.js",
    "test": "npm run lint -- --fix && npm run test-local",
    "test-local": "egg-bin test",
    "cov": "egg-bin cov",
    "ci": "npm run lint && npm run cov",
    "doc-server": "./scripts/doc.js server",
    "doc-build": "./scripts/doc.js build",
    "doc-deploy": "./scripts/doc.js deploy",
    "autod": "autod",
    "puml": "puml . --dest ./docs",
    "commits": "./scripts/commits.sh"
  },
  "homepage": "https://github.com/eggjs/egg",
  "repository": {
    "type": "git",
    "url": "https://github.com/eggjs/egg.git"
  },
  "engines": {
    "node": ">= 6.0.0"
  },
  "license": "MIT"
}

@myfreax
Copy link
Contributor Author

myfreax commented Feb 25, 2017

@dead-horse

{
  "config": {
    "onerror": {
      "errorPageUrl": "",
      "appErrorFilter": null
    },
    "userservice": {
      "service": {}
    },
    "userrole": {},
    "session": {
      "maxAge": 86400000,
      "key": "EGG_SESS",
      "httpOnly": true,
      "encrypt": true,
      "overwrite": true,
      "signed": true
    },
    "i18n": {
      "defaultLocale": "en_US",
      "dir": "/home/huangyanxiong/language/javascript/egg-view-handlebars/config/locales",
      "queryField": "locale",
      "cookieField": "locale",
      "cookieMaxAge": "1y",
      "functionName": "__",
      "dirs": [
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-onerror/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-userservice/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-userrole/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-session/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-i18n/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-validate/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-watcher/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-multipart/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-security/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-development/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-schedule/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-logrotator/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-static/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-jsonp/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-view/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/locales",
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/config/locales"
      ]
    },
    "watcher": {
      "type": "development",
      "eventSources": {
        "default": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-watcher/lib/event-sources/default",
        "development": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-watcher/lib/event-sources/development"
      }
    },
    "multipart": {
      "autoFields": false,
      "defaultCharset": "utf8",
      "fieldNameSize": 100,
      "fieldSize": 102400,
      "fields": 10,
      "fileSize": 10485760,
      "files": 10,
      "fileExtensions": [],
      "whitelist": null
    },
    "security": {
      "domainWhiteList": [],
      "protocolWhiteList": [],
      "defaultMiddleware": "csrf,hsts,methodnoallow,noopen,nosniff,csp,xssProtection,xframe",
      "csrf": {
        "enable": true,
        "useSession": false,
        "ignoreJSON": false,
        "cookieName": "csrfToken",
        "sessionName": "csrfToken",
        "headerName": "x-csrf-token",
        "bodyName": "_csrf",
        "queryName": "_csrf"
      },
      "xframe": {
        "enable": true,
        "value": "SAMEORIGIN"
      },
      "hsts": {
        "enable": false,
        "maxAge": 31536000,
        "includeSubdomains": false
      },
      "methodnoallow": {
        "enable": true
      },
      "noopen": {
        "enable": true
      },
      "nosniff": {
        "enable": true
      },
      "xssProtection": {
        "enable": true,
        "value": "1; mode=block"
      },
      "csp": {
        "enable": false,
        "policy": {}
      }
    },
    "helper": {
      "shtml": {}
    },
    "development": {
      "watchDirs": [],
      "ignoreDirs": [],
      "fastReady": true
    },
    "logrotator": {
      "filesRotateByHour": null,
      "filesRotateBySize": null,
      "maxFileSize": 52428800,
      "maxFiles": 10,
      "rotateDuration": 60000,
      "maxDays": 31
    },
    "static": {
      "prefix": "/public/",
      "dir": "/home/huangyanxiong/language/javascript/egg-view-handlebars/app/public",
      "dynamic": true,
      "preload": false,
      "buffer": false
    },
    "jsonp": {
      "limit": 50,
      "callback": "_callback",
      "csrf": false
    },
    "view": {
      "root": [
        "/home/huangyanxiong/language/javascript/egg-view-handlebars/app/view"
      ],
      "cache": true,
      "defaultExtension": ".html",
      "defaultViewEngine": "",
      "mapping": {}
    },
    "env": "local",
    "name": "egg-view-handlebars",
    "keys": "",
    "proxy": false,
    "protocolHeaders": "x-forwarded-proto",
    "ipHeaders": "x-forwarded-for",
    "hostHeaders": "x-forwarded-host",
    "pkg": {
      "name": "egg-view-handlebars",
      "version": "0.0.1",
      "main": "index.js",
      "repository": {},
      "eggPlugin": {
        "name": "view"
      },
      "keywords": [
        "egg",
        "eggPlugin",
        "egg-plugin",
        "egg-plugin-view",
        "handlebars",
        "template"
      ],
      "author": "huangyanxiong",
      "license": "MIT",
      "dependencies": {
        "egg": "^1.0.0-rc.1",
        "handlebars": "^4.0.6"
      },
      "devDependencies": {
        "egg-bin": "^2.2.1",
        "egg-ci": "^1.1.0",
        "egg-mock": "^3.0.1",
        "egg-view": "^1.0.0",
        "eslint": "^3.16.1",
        "eslint-config-egg": "^3.2.0",
        "marked": "^0.3.6",
        "supertest": "^3.0.0"
      }
    },
    "baseDir": "/home/huangyanxiong/language/javascript/egg-view-handlebars",
    "HOME": "/home/huangyanxiong",
    "rundir": "/home/huangyanxiong/language/javascript/egg-view-handlebars/run",
    "notfound": {
      "pageUrl": ""
    },
    "siteFile": {
      "/favicon.ico": {
        "type": "Buffer",
        "data": [
          137
        ]
      }
    },
    "bodyParser": {
      "enable": true,
      "encoding": "utf8",
      "formLimit": "100kb",
      "jsonLimit": "100kb",
      "strict": true,
      "queryString": {
        "arrayLimit": 100,
        "depth": 5,
        "parameterLimit": 1000
      }
    },
    "logger": {
      "dir": "/home/huangyanxiong/language/javascript/egg-view-handlebars/logs/egg-view-handlebars",
      "encoding": "utf8",
      "env": "local",
      "level": "DEBUG",
      "consoleLevel": "INFO",
      "outputJSON": false,
      "buffer": false,
      "appLogName": "egg-view-handlebars-web.log",
      "coreLogName": "egg-web.log",
      "agentLogName": "egg-agent.log",
      "errorLogName": "common-error.log",
      "coreLogger": {
        "consoleLevel": "WARN"
      },
      "type": "application"
    },
    "httpclient": {
      "keepAlive": true,
      "freeSocketKeepAliveTimeout": 4000,
      "timeout": 30000,
      "maxSockets": null,
      "maxFreeSockets": 256,
      "enableDNSCache": false
    },
    "coreMiddleware": [
      "meta",
      "siteFile",
      "notfound",
      "static",
      "bodyParser",
      "userservice",
      "session",
      "i18n",
      "securities"
    ],
    "workerStartTimeout": 600000,
    "coreMiddlewares": [
      "meta",
      "siteFile",
      "notfound",
      "static",
      "bodyParser",
      "userservice",
      "session",
      "i18n",
      "securities"
    ],
    "appMiddlewares": [],
    "appMiddleware": [],
    "multipartParseOptions": {
      "autoFields": false,
      "defCharset": "utf8",
      "limits": {
        "fieldNameSize": 100,
        "fieldSize": 102400,
        "fields": 10,
        "fileSize": 10485760,
        "files": 10
      }
    }
  },
  "plugins": {
    "onerror": {
      "enable": true,
      "package": "egg-onerror",
      "name": "onerror",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-onerror",
      "version": "1.3.0"
    },
    "userservice": {
      "enable": true,
      "package": "egg-userservice",
      "name": "userservice",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-userservice",
      "version": "1.0.0"
    },
    "userrole": {
      "enable": true,
      "package": "egg-userrole",
      "name": "userrole",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-userrole",
      "version": "1.1.1"
    },
    "session": {
      "enable": true,
      "package": "egg-session",
      "name": "session",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-session",
      "version": "1.1.0"
    },
    "i18n": {
      "enable": true,
      "package": "egg-i18n",
      "name": "i18n",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-i18n",
      "version": "1.1.0"
    },
    "validate": {
      "enable": true,
      "package": "egg-validate",
      "name": "validate",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-validate",
      "version": "1.0.0"
    },
    "watcher": {
      "enable": true,
      "package": "egg-watcher",
      "name": "watcher",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-watcher",
      "version": "2.1.0"
    },
    "multipart": {
      "enable": true,
      "package": "egg-multipart",
      "name": "multipart",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-multipart",
      "version": "1.1.0"
    },
    "security": {
      "enable": true,
      "package": "egg-security",
      "name": "security",
      "dependencies": [
        "session"
      ],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-security",
      "version": "1.6.0"
    },
    "development": {
      "enable": true,
      "package": "egg-development",
      "name": "development",
      "dependencies": [
        "watcher"
      ],
      "optionalDependencies": [],
      "env": [
        "local"
      ],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-development",
      "version": "1.2.0"
    },
    "schedule": {
      "enable": true,
      "package": "egg-schedule",
      "name": "schedule",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-schedule",
      "version": "2.3.0"
    },
    "logrotator": {
      "enable": true,
      "package": "egg-logrotator",
      "name": "logrotator",
      "dependencies": [
        "schedule"
      ],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-logrotator",
      "version": "2.2.2"
    },
    "static": {
      "enable": true,
      "package": "egg-static",
      "name": "static",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-static",
      "version": "1.2.0"
    },
    "jsonp": {
      "enable": true,
      "package": "egg-jsonp",
      "name": "jsonp",
      "dependencies": [],
      "optionalDependencies": [
        "security"
      ],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-jsonp",
      "version": "1.0.0"
    },
    "view": {
      "enable": true,
      "package": "egg-view",
      "name": "view",
      "dependencies": [],
      "optionalDependencies": [],
      "env": [],
      "from": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg/config/plugin.js",
      "path": "/home/huangyanxiong/language/javascript/egg-view-handlebars/node_modules/egg-view",
      "version": "1.0.0"
    }
  }
}

@atian25
Copy link
Member

atian25 commented Feb 25, 2017

单元测试代码也贴贴。或者你直接把你的这个插件上传到 github

@myfreax
Copy link
Contributor Author

myfreax commented Feb 25, 2017

@popomore
Copy link
Member

Plugin 名字不应该是 view

@myfreax
Copy link
Contributor Author

myfreax commented Feb 25, 2017

@popomore 那个文件?

@atian25
Copy link
Member

atian25 commented Feb 25, 2017 via email

@myfreax
Copy link
Contributor Author

myfreax commented Feb 25, 2017

已更改

@atian25
Copy link
Member

atian25 commented Feb 25, 2017

那问题应该解决了吧?

@myfreax
Copy link
Contributor Author

myfreax commented Feb 25, 2017

解决了,可以说下执行流程吗?

@dead-horse
Copy link
Member

#398

之后 egg-view 是主插件,类似 handlebars、nunjucks 等插件都是它上面的扩展,所以他们的插件名不能叫 egg-view。

@surya-tamirisa
Copy link

english please

@atian25
Copy link
Member

atian25 commented Oct 8, 2019

@surya-tamirisa sorry, we will.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants