場景描述
最近在使用uni-app開發小程序時,因爲引入了第三方組件使用了sass,HBuilder默認沒有安裝‘scss/sass’插件,導致編譯報錯,於是用安裝了一下,但是接着運行小程序又出現瞭如下錯誤:
11:07:06.103 Module build failed (from ./node_modules/sass-loader/lib/loader.js):
11:07:06.103 Error: \\?\C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node is not a valid Win32 application.
11:07:06.110 \\?\C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node
11:07:06.111 at Object.Module._extensions..node (module.js:681:18)
11:07:06.117 at Module.load (module.js:565:32)
11:07:06.123 at tryModuleLoad (module.js:505:12)
11:07:06.128 at Function.Module._load (module.js:497:3)
11:07:06.129 at Module.require (module.js:596:17)
11:07:06.134 at require (internal/module.js:11:18)
11:07:06.134 at module.exports (E:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\lib\binding.js:19:10)
11:07:06.144 at Object.<anonymous> (E:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\lib\index.js:14:35)
11:07:06.145 at Module._compile (module.js:652:30)
11:07:06.155 at Object.Module._extensions..js (module.js:663:10)
11:07:06.161 at Module.load (module.js:565:32)
11:07:06.172 at tryModuleLoad (module.js:505:12)
11:07:06.172 at Function.Module._load (module.js:497:3)
11:07:06.179 at Module.require (module.js:596:17)
11:07:06.186 at require (internal/module.js:11:18)
11:07:06.187 at Object.<anonymous> (E:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\index.js:8:22)
分析
首先我們從錯誤信息中分析提取有用的信息:C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node is not a valid Win32 application。這段信息說的就是這個環境下的的win32-x64-64_binding.node這個二進制可執行文件是無效的。
初步排查,排除版本問題([email protected]):
npm rm node-sass
npm install node-sass
然後重新運行小程序還是報同樣的錯誤。
解決辦法
經過測試和版本沒關係。於是根據提示下載/win32-ia32-57_binding.node.這個文件。然後放入剛纔的目錄下。重啓,沒效果還是剛纔的錯誤。
然後修改系統環境中的變量配置,還是一樣的效過。
於是想到替換文件名,將剛纔下載的文件名替換未報錯的文件名
這樣就啓動了。
經過兩小時的探索,不斷的搜索資料,解決了問題。綜合這幾天的實驗。。總結一下,詳細的步驟
npm install -g node-gyp
npm install –global –production windows-build-tools
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org
npm install node-sass(在C盤以管理員身份執行)
配置環境變量
SASS_BINARY_PATH=你自己的文件路徑 eg:C:\Users\10368\AppData\Roaming\npm-cache\node-sass\4.13.0\win32-x64-64_binding.node