ASP.NET 5 发布到 Azure Gulp libass 错误

ASP.NET 5 Publish to Azure Gulp libass error

我有一个 asp.net 5 网站(使用 gulp 和 gulp-sass)我正在开发,但每当我尝试发布到我的 Azure 网站时我收到以下错误

DNU(0,0): Error : Thelibsassbinding was not found in project_path\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\binding.node 下面的完整堆栈跟踪

我在 Visual Studio 任务 运行 资源管理器中遇到了完全相同的错误,直到我遵循 this article,但我在发布时仍然遇到错误。

有什么帮助吗?

DNU(0,0): Error : The `libsass` binding was not found in project_path\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\binding.node
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error : This usually happens because your node version has changed.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error : Run `npm rebuild node-sass` to build the binding for your current node version.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Object.sass.getBinaryPath (project_path\node_modules\gulp-sass\node_modules\node-sass\lib\extensions.js:158:11)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Object.<anonymous>
    (project_path\node_modules\gulp-sass\node_modules\node-sass\lib\index.js:16:36)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Module._compile (module.js:456:26)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Object.Module._extensions..js (module.js:474:10)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Module.load (module.js:356:32)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Function.Module._load (module.js:312:12)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Module.require (module.js:364:17)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at require (module.js:380:17)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Object.<anonymous>
    (project_path\node_modules\gulp-sass\index.js:183:21)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Module._compile (module.js:456:26)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error :     at Object.Module._extensions..js (module.js:474:10)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(152,5): Error : The 'prepublish' script failed with status code 8.

这可能是因为预发布脚本中使用的节点 Visual Studio 2015 版本与您用于开发任务的版本不同

您可以通过将 node --version 放在 project.json.

内的预发布脚本中来测试它

我的产出 v0.10.31.

您可以在工具->选项->中更改大多数Visual Studio工具(Task Runner Explorer、节点包还原等)使用的版本通过将 $(PATH) 移动到顶部或将 C:\Program Files\nodejs 添加到顶部,项目和解决方案->外部 Web 工具。

不幸的是,预发布脚本没有遵守这一点

解决方法是将所有预发布任务放在脚本中,然后调用它。

project.json :

...
  "scripts": {
    "prepublish": ["prepublish"]
  }
...

prepublish.cmd :

set PATH=C:\Program Files\nodejs;.\node_modules\.bin;%PATH%

call npm install || goto :error
call bower install || goto :error
call gulp clean || goto :error
call gulp min || goto :error
goto :EOF

:error
echo Failed with error #%errorlevel%.
exit /b %errorlevel%

Here 是一个 GitHub 问题,跟踪在 VS 中更新节点和 npm 的请求。

尝试删除本地存储库中的 node_modules 文件夹,然后重新启动 VS。 那解决了我的问题。

此处说明:https://github.com/aspnet/Home/issues/782