首页 文章

angular2 i18n无法读取未定义的属性'create'

提问于
浏览
5

我正在使用angular2 .
我使用this project进行启动应用程序 .

要实现多语言支持this documentation

步骤:1)执行命令

npm install @angular/compiler-cli @angular/platform-server --save

输出:

  • UNMET PEER DEPENDENCY rxjs@5.0.0-rc.5`- UNMET PEER DEPENDENCY tslint@4.0.2 npm WARN可选跳过选择依赖:fsevents@^1.0.0(node_modules \ chokidar \ node_modules \ fsevents):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY:不支持fsevents@1.0.15的平台:want {“os”:“darwin”,“arch”:“any”}(当前:{“os”:“win32”,“arch”:“ x64“})npm WARN @ angular / core @ 2.1.1需要一个rxjs@5.0.0-beta.12的对等体,但没有安装 . npm WARN @ angular / forms @ 2.2.4需要@ angular / core @ 2.2.4的对等,但没有安装 . npm WARN @ angular / forms @ 2.2.4需要@ angular / common @ 2.2.4的同伴,但没有安装 . npm WARN @ angular / http @ 2.1.1需要一个rxjs@5.0.0-beta.12的对等体,但没有安装 . npm WARN @ angular / router @ 3.1.1需要一个rxjs@5.0.0-beta.12的对等体,但没有安装 . npm WARN codelyzer@1.0.0-beta.4需要tslint@^3.9.0的对等方,但没有安装 . npm WARN codelyzer@1.0.0-beta.4需要@ angular / compiler @ ~2.2.0的对等体,但没有安装 . npm WARN codelyzer@1.0.0-beta.4需要@ angular / core @~2.2.0的对等体,但没有安装 . npm WARN tslint-loader@2.1.5需要tslint@^3.0.0的对等体,但没有安装 . npm WARN @ angular / compiler-cli @ 2.4.1需要@ angular / compiler @ 2.4.1的对等,但没有安装 . npm WARN @ angular / compiler-cli @ 2.4.1需要@ angular / core @ 2.4.1的对等体,但没有安装 .

2)执行命令“./node_modules/.bin/ng-xi18n”它给出了以下错误

C:\ Projects \ temp \ PathTrak3 \ PathTrak>“./ node_modules / .bin / ng-xi18n”TypeError:无法在Function.Extractor.create中读取未定义的属性'create'(C:\ Projects \ temp \ PathTrak3 \提取时的PathTrak \ node_modules \ @angular \ compiler-cli \ src \ extractor .js:69:45)(C:\ Projects \ temp \ PathTrak3 \ PathTrak \ node_modules \ @angular \ compiler-cli \ src \ extract_i18n.js: 7:34)在Object的Object.main(C:\ Projects \ temp \ PathTrak3 \ PathTrak \ node_modules \ @angular \ tsc-wrapped \ src \ main.js:47:16) . 位于Object.Module._extensions的Module._compile(module.js:570:32)处的(C:\ Projects \ temp \ PathTrak3 \ PathTrak \ node_modules \ @angular \ compiler-cli \ src \ extract_i18n.js:14:9)在函数.Module._load(module.js:438:3)的tryModuleLoad(module.js:446:12)的Module.load(module.js:487:32)中的..js(module.js:579:10) )在Module.runMain(module.js:604:10)提取失败

由于这个错误,我无法实现i18n . 请在package.json文件中找到以下依赖项

"dependencies": {
    "@angular/common": "2.1.1",
    "@angular/compiler": "2.1.1",
    "@angular/compiler-cli": "^2.4.1",
    "@angular/core": "2.1.1",
    "@angular/forms": "^2.1.1",
    "@angular/http": "2.1.1",
    "@angular/platform-browser": "2.1.1",
    "@angular/platform-browser-dynamic": "2.1.1",
    "@angular/platform-server": "^2.1.1",
    "@angular/router": "3.1.1",
    "@angularclass/conventions-loader": "^1.0.2",
    "@angularclass/hmr": "~1.2.0",
    "@angularclass/hmr-loader": "~3.0.2",
    "angular2-highcharts": "^0.4.0",
    "assets-webpack-plugin": "^3.4.0",
    "core-js": "^2.4.1",
    "http-server": "^0.9.0",
    "ie-shim": "^0.1.0",
    "rxjs": "^5.0.0-rc.1",
    "zone.js": "~0.6.17"
  }

是package.json文件中的版本问题吗?请帮助

谢谢,Sardar Nale

-------------------------------------Modification--------------------

我删除了node_modules文件夹,并尝试更新package.json,如下所示,UNMET dpendancy问题已解决,但在运行时出现错误,因为 Error

C:\Projects\temp\PathTrak12\PathTrak>npm start

> angular2-webpack-starter@5.1.1 start C:\Projects\temp\PathTrak12\PathTrak
> npm run server:dev


> angular2-webpack-starter@5.1.1 server:dev C:\Projects\temp\PathTrak12\PathTrak
> webpack-dev-server --config config/webpack.dev.js --progress --profile --watch --content-base src/

keywords if/then/else require v5 option

C:\Projects\temp\PathTrak12\PathTrak\config\webpack.common.js:178
      new ForkCheckerPlugin(),
      ^
TypeError: ForkCheckerPlugin is not a constructor
    at module.exports (C:\Projects\temp\PathTrak12\PathTrak\config\webpack.common.js:178:7)
    at Object.<anonymous> (C:\Projects\temp\PathTrak12\PathTrak\config\webpack.dev.js:23:31)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at requireConfig (C:\Projects\temp\PathTrak12\PathTrak\node_modules\webpack\bin\convert-argv.js:98:18)
    at C:\Projects\temp\PathTrak12\PathTrak\node_modules\webpack\bin\convert-argv.js:111:17
    at Array.forEach (native)
    at module.exports (C:\Projects\temp\PathTrak12\PathTrak\node_modules\webpack\bin\convert-argv.js:109:15)
    at Object.<anonymous> (C:\Projects\temp\PathTrak12\PathTrak\node_modules\webpack-dev-server\bin\webpack-dev-server.js:190:48)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "server:de
v"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! angular2-webpack-starter@5.1.1 server:dev: `webpack-dev-server --config config/webpack.dev.js --progress --profile --watch
--content-base src/`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the angular2-webpack-starter@5.1.1 server:dev script 'webpack-dev-server --config config/webpack.dev.js --progres
s --profile --watch --content-base src/'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the angular2-webpack-starter package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     webpack-dev-server --config config/webpack.dev.js --progress --profile --watch --content-base src/
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs angular2-webpack-starter
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls angular2-webpack-starter
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Projects\temp\PathTrak12\PathTrak\npm-debug.log

npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! angular2-webpack-starter@5.1.1 start: `npm run server:dev`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the angular2-webpack-starter@5.1.1 start script 'npm run server:dev'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the angular2-webpack-starter package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm run server:dev
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs angular2-webpack-starter
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls angular2-webpack-starter
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Projects\temp\PathTrak12\PathTrak\npm-debug.log

package.json file

"dependencies": {
    "@angular/common": "~2.4.1",
    "@angular/compiler": "~2.4.1",
    "@angular/compiler-cli": "~2.4.1",
    "@angular/core": "~2.4.1",
    "@angular/forms": "~2.4.1",
    "@angular/http": "~2.4.1",
    "@angular/platform-browser": "~2.4.1",
    "@angular/platform-browser-dynamic": "~2.4.1",
    "@angular/platform-server": "~2.4.1",
    "@angular/router": "~3.4.1",
    "@angularclass/conventions-loader": "^1.0.2",
    "@angularclass/hmr": "~1.2.2",
    "@angularclass/hmr-loader": "~3.0.2",
    "angular2-highcharts": "^0.4.0",
    "assets-webpack-plugin": "^3.4.0",
    "core-js": "^2.4.1",
    "http-server": "^0.9.0",
    "ie-shim": "^0.1.0",
    "rxjs": "~5.0.2",
    "zone.js": "~0.7.4"
  },
  "devDependencies": {
    "@types/hammerjs": "^2.0.33",
    "@types/jasmine": "^2.2.34",
    "@types/node": "^6.0.38",
    "@types/protractor": "^1.5.20",
    "@types/selenium-webdriver": "2.53.38",
    "@types/source-map": "^0.5.0",
    "@types/uglify-js": "^2.0.27",
    "@types/webpack": "^2.0.0",
    "angular2-template-loader": "^0.6.0",
    "awesome-typescript-loader": "~3.0.0-beta.17",
    "codelyzer": "~2.0.0-beta.4",
    "copy-webpack-plugin": "^4.0.0",
    "css-loader": "^0.26.0",
    "exports-loader": "^0.6.3",
    "expose-loader": "^0.7.1",
    "file-loader": "^0.9.0",
    "gh-pages": "^0.12.0",
    "html-webpack-plugin": "^2.21.0",
    "imports-loader": "^0.7.0",
    "istanbul-instrumenter-loader": "1.2.0",
    "json-loader": "^0.5.4",
    "karma": "^1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.0.2",
    "karma-mocha-reporter": "^2.0.0",
    "karma-remap-coverage": "^0.1.4",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "1.8.1",
    "node-sass": "^4.1.1",
    "parse5": "^2.2.1",
    "protractor": "^4.0.10",
    "raw-loader": "0.5.1",
    "rimraf": "~2.5.4",
    "sass-loader": "^4.1.1",
    "script-ext-html-webpack-plugin": "1.3.2",
    "source-map-loader": "^0.1.5",
   "string-replace-loader": "1.0.5",
    "style-loader": "^0.13.1",
    "to-string-loader": "^1.1.4",
    "ts-helpers": "1.1.2",
    "ts-node": "^2.0.0",
    "tslint": "^4.0.0-dev.0",
    "tslint-loader": "^3.3.0",
    "typedoc": "^0.5.3",
    "typescript": "2.0.10",
    "url-loader": "^0.5.7",
    "webpack": "^2.1.0-beta",
    "webpack-dev-middleware": "^1.6.1",
    "webpack-dev-server": "2.2.0-rc.0",
    "webpack-md5-hash": "^0.0.5",
    "webpack-merge": "~2.0.0"
  }

1 回答

  • 3

    我想这只是你的 angular versions 中的一个不匹配 . 你应该为每个 @angular 软件包坚持使用相同的版本(路由器除外,它将是1个主要版本,直到角度4被释放) .

    跟你的...

    npm install @angular/compiler-cli @angular/platform-server --save
    

    ......似乎你至少在_ 4.1 得到 @angular/compiler-cli ,可能在2.4.1得到 @angular/platform-server . 由于您已将 other @angular 软件包设置为固定版本2. 1.1 ,因此会出现一些冲突 .

    注意:文档将始终假定您使用的是最新(稳定)角度版本 .

    那么如何解决它......


    1.安装旧包

    您可以通过在 package.json 中将 @angular/compiler-cli@angular/platform-server 添加到固定 2.1.1 来安装旧软件包(请不要忘记在此处删除插入符号(^)) . 然后删除 node_modules 文件夹并再次运行 npm install .


    2. ...或更新其他包

    另一个选择是您将其他 @angular 软件包更新到最新的2.4.1版本 . 在这里,您必须将 2.1.1 替换为 package.json 中的 2.4.1 (除了将是 3.4.1 的路由器) . 然后删除 node_modules 文件夹并再次运行 npm install .

    在这里,您可能会遇到一些其他问题,具体取决于您的应用...您可能需要首先检查Changelog .


    仅供参考:当您在项目中安装新的 @angular 软件包时,请始终坚持使用您正在使用的版本 . 要在您的情况下安装特定版本,请注意(注意 @2.1.1 ):

    npm install @angular/compiler-cli@2.1.1 @angular/platform-server@2.1.1 --save
    

    ...或更新所有新版本;-)

相关问题