当前位置: 代码迷 >> 综合 >> ionic2 ionic3 项目创建遇到的问题总结
  详细解决方案

ionic2 ionic3 项目创建遇到的问题总结

热度:116   发布时间:2023-09-24 05:56:18.0

真是一觉醒来,就又有新版本发布啊。

这一次的总结主要针对ionic3,当然也适用于ionic2.

不一定面面俱到,但是希望看到这篇总结开发者能够少走一些弯路。


First of all,当然是安装最新版的ionic了。

npm install -g ionic

可以用

ionic info

查看一系列依赖工具的版本。


Fine,现在开始创建ionic项目了。一切看起来的风平浪静的样子。

还是那句用烂了的老命令。

ionic start ionic3-angular4 --v2

当然,虽然是ionic3,但是还是要使用 --v2 这个命令。

不信的话,装好了去项目文件里的 packagge,json 里面去看。

"dependencies": {"@angular/common": "4.1.0","@angular/compiler": "4.1.0","@angular/compiler-cli": "4.1.0","@angular/core": "4.1.0","@angular/forms": "4.1.0","@angular/http": "4.1.0","@angular/platform-browser": "4.1.0","@angular/platform-browser-dynamic": "4.1.0","@ionic-native/core": "3.7.0","@ionic-native/splash-screen": "3.7.0","@ionic-native/status-bar": "3.7.0","@ionic/storage": "2.0.1","ionic-angular": "3.2.1","ionicons": "3.0.0","rxjs": "5.1.1","sw-toolbox": "3.6.0","zone.js": "0.8.10"}


然而, 实际上,我第一次这么 start的时候,并没有成功。

$ ionic start ionic3-angular4 --v2
? What starter would you like to use: (Use arrow keys)
? What starter would you like to use: tabs
? The directory ionic3-angular4 contains file(s) that could conflict. Would youY
? The directory ionic3-angular4 contains file(s) that could conflict. Would youlike to overwrite the directory with this new project? Yes
? Creating directory G:\myionicapp\ionic3-angular4 - done!
Fetching app base (https://github.com/driftyco/ionic2-app-base/archive/master.tar.gz)
? Downloading - done!
Fetching starter template tabs (https://github.com/driftyco/ionic2-starter-tabs/archive/master.tar.gz)
? Downloading - done!
? Updating package.json with app details - done!
? Creating configuration file ionic.config.json - done!
Installing dependencies may take several minutes!
> npm install
? Running command - failed!
[ERROR] An error occurred while running npm install (exit code 1):npm WARN deprecated object-keys@0.2.0: Please update to the latest object-keysnpm WARN prefer global node-gyp@3.6.1 should be installed with -g> node-sass@4.5.0 install G:\myionicapp\ionic3-angular4\node_modules\node-sass> node scripts/install.jsDownloading binary from https://github.com/sass/node-sass/releases/download/v4.5.0/win32-x64-48_binding.nodeCannot download "https://github.com/sass/node-sass/releases/download/v4.5.0/win32-x64-48_binding.node":connect ETIMEDOUT 52.216.17.216:443
...省略一万字
看起来是npm的锅,请求或者下载超时了。

于是github上面大佬们就说,换个不怎么限制时间的版本吧。(相关的github上的issue请参考 https://github.com/driftyco/ionic-cli/issues/2256)

于是尝试

npm i -g ionic@legacy

好家伙,是不限制时间了,折腾了十来次,能把github上的文件download下来了。

but,npm 始终install不上啊。一直停留在

Installing npm packages (may take a minute or two)

怕是因为墙的原因,反正就是获取不了。

所以,一个可行的办法就是,

创建ionic项目时,先屏蔽掉依赖的安装。


ionic start ionic3-angular4 --v2 --skip-npm


啊,可以了。我看到了ionic的音符。

问题远远还没又解决。

先安装依赖吧,依赖装好了才可以真正启用ionic serve。

cnpm install --save
看起来都是对的。

$ cnpm install --save
√ Installed 19 packages
√ Linked 0 latest versions
√ Run 0 scripts
√ All packages installed (1 packages installed from npm registry, used 7s, speed     3.98kB/s, json 13(29.65kB), tarball 0B)
Recently updated (since 2017-05-10): 1 packages (detail see file C:\Users\**\i    onic3-angular4-1\node_modules\.recently_updates.txt)


然鹅,当我在输入

ionic serve

出现了一些意想不到的错误。

ionic serve> ionic-hello-world@0.0.0 ionic:serve C:\Users\黛扬\ionic3-angular4-1
> ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livere    load-port" "35729"module.js:471throw err;^Error: Cannot find module 'fs-extra'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module.require (module.js:497:17)at require (internal/module.js:20:19)at Object.<anonymous> (C:\Users\黛扬\ionic3-angular4-1\node_modules\.1.3.7@@    ionic\app-scripts\dist\util\config.js:4:18)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)npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\    node_modules\\npm\\bin\\npm-cli.js" "run" "ionic:serve" "--" "--v2" "--address"     "0.0.0.0" "--port" "8100" "--livereload-port" "35729"
npm ERR! node v6.9.5
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! ionic-hello-world@0.0.0 ionic:serve: `ionic-app-scripts serve "--v2" "-    -address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ionic-hello-world@0.0.0 ionic:serve script 'ionic-app-scr    ipts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "357    29"'.
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 ionic-hello-world pac    kage,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100    " "--livereload-port" "35729"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs ionic-hello-world
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm own
和类似


$ ionic serve> ionic-hello-world@0.0.0 ionic:serve C:\Users\黛扬\ionic3-angular4-1
> ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"C:\Users\黛扬\ionic3-angular4-1\node_modules\node-sass\lib\binding.js:15throw new Error(errors.missingBinary());^Error: Missing binding C:\Users\黛扬\ionic3-angular4-1\node_modules\node-sass\vendor\win32-x64-48\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 6.xFound bindings for the following environments:- Windows 64-bit with Node.js 6.xThis usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to build the binding for your current environment.at module.exports (C:\Users\黛扬\ionic3-angular4-1\node_modules\node-sass\lib\binding.js:15:13)at Object.<anonymous> (C:\Users\黛扬\ionic3-angular4-1\node_modules\node-sass\lib\index.js:14:35)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 Object.<anonymous> (C:\Users\黛扬\ionic3-angular4-1\node_modules\@ionic\app-scripts\dist\core\bundle-components.js:6:16)npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "ionic:serve" "--" "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"
npm ERR! node v6.9.5
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! ionic-hello-world@0.0.0 ionic:serve: `ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ionic-hello-world@0.0.0 ionic:serve script 'ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35

嗯,我试过了npm ERR 提示后面的操作。全以失败告终。


于是,就只好

移除node_modules文件,然后清除npm缓存,再将npm升级,继而重新安装。(github 上面能够solve那些issue的基本都是执行这些操作的,大多都是因为版本问题出现的错误)

rm -rf node_modules
npm clean cache
npm update
cnpm install --save


在我执行了 cnpm install --save 之后,我看到了 

  Today:→ @ionic/app-scripts@1.3.7 ? chokidar@1.6.1 ? anymatch@1.3.0 ? micromatch@2.3.11 ? kind-of@^3.0.2 (02:21:41)→ @ionic/app-scripts@1.3.7 ? babili@0.0.10 ? babel-cli@6.24.1 ? babel-core@6.24.1 ? debug@^2.1.1 (12:33:51)


讲道理上面的好像是更新记录之类的。所以不更新就是等着踩坑。= =,就像中永恒之蓝的病毒一样,不更新就踩坑。

终于,看了近十页ionic serve 的issue 之后,自己电脑的ionic serve 能够work了。

$ ionic serve> ionic-hello-world@0.0.0 ionic:serve C:\Users\黛扬\ionic3-angular4-1
> ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"[13:19:54]  ionic-app-scripts 1.3.7
[13:19:54]  watch started ...
[13:19:54]  build dev started ...
[13:19:54]  clean started ...
[13:19:54]  clean finished in 1 ms
[13:19:54]  copy started ...
[13:19:54]  transpile started ...
[13:19:58]  transpile finished in 4.24 s
[13:19:58]  preprocess started ...
[13:19:58]  deeplinks started ...
[13:19:58]  deeplinks finished in 9 ms
[13:19:58]  preprocess finished in 10 ms
[13:19:58]  webpack started ...
[13:19:59]  copy finished in 4.80 s
[13:20:08]  webpack finished in 9.34 s
[13:20:08]  sass started ...
[13:20:08]  sass finished in 777 ms
[13:20:08]  postprocess started ...
[13:20:08]  postprocess finished in 32 ms
[13:20:08]  lint started ...
[13:20:08]  build dev finished in 14.56 s
[13:20:09]  watch ready in 14.72 s
[13:20:09]  dev server running: http://localhost:8100/[13:20:14]  lint finished in 5.83 s

很棒棒, it works.