6

我正在尝试使用 Azure 的 Git 部署来构建和打包我的项目。

我创建了以下文件

  1. .部署
  2. 部署.cmd
  3. Gruntfile.js
  4. 包.json
  5. 鲍尔.json

我关注了Jay Harris 的博客文章。下面给出的是 deploy.cmd 文件中的部署部分:

:: 2. Select node version
call :SelectNodeVersion

:: 3. Install npm packages
IF EXIST "%DEPLOYMENT_TARGET%\package.json" (
  pushd "%DEPLOYMENT_TARGET%"
  call :ExecuteCmd !NPM_CMD! install --production
  IF !ERRORLEVEL! NEQ 0 goto error
  popd
)

:: 4. Install bower packages
IF EXIST "%DEPLOYMENT_TARGET%\bower.json" (
  call !NPM_CMD! install bower
  IF !ERRORLEVEL! NEQ 0 goto error
  call .\node_modules\.bin\bower install
  IF !ERRORLEVEL! NEQ 0 goto error
)

:: 4. run grunt
IF EXIST "%DEPLOYMENT_TARGET%\Gruntfile.js" ( 
  call !NPM_CMD! install grunt-cli  
  call .\node_modules\.bin\grunt --no-color clean common dist
  IF !ERRORLEVEL! NEQ 0 goto error
)

部署失败并出现以下错误:

Selected npm version 3.8.6
Updating iisnode.yml at D:\home\site\wwwroot\iisnode.yml
spa@ D:\home\site\wwwroot
+-- bower@1.7.9  extraneous
npm WARN grunt-contrib-compass@1.0.4 requires a peer of grunt@>=0.4.0 but none was installed.
+-- UNMET PEER DEPENDENCY grunt@>=0.4.0
`-- grunt-cli@1.2.0  extraneous

spa@ D:\home\site\repository
`-- bower@1.7.9  extraneous

spa@ D:\home\site\repository
+-- bower@1.7.9  extraneous
`-- grunt-cli@1.2.0  extraneous

grunt-cli: The grunt command line interface (v1.2.0)

Fatal error: Unable to find local grunt.

If you're seeing this message, grunt hasn't been installed locally to
your project. For more information about installing and configuring grunt,
please see the Getting Started guide:

http://gruntjs.com/getting-started
An error has occurred during web site deployment.
npm WARN grunt-contrib-compass@1.0.4 requires a peer of grunt@>=0.4.0 but none was installed.\r\nC:\Program Files (x86)\SiteExtensions\Kudu\55.50610.2267\bin\Scripts\starter.cmd deploy.cmd

我不确定我还需要在这里做什么才能安装它。试图在网上搜索类似的问题,但找不到任何具体的解决方案。如果有人可以帮助我,那就太好了。

我的 package.json

{
  "name": "myapp",
  "private": true,
  "devDependencies": {
    "autoprefixer-core": "^5.2.1",
    "grunt": "^0.4.5",
    "grunt-angular-templates": "^0.5.7",
    "grunt-concurrent": "^1.0.0",
    "grunt-contrib-clean": "^0.6.0",
    "grunt-contrib-compass": "^1.0.0",
    "grunt-contrib-concat": "^0.5.0",
    "grunt-contrib-connect": "^0.9.0",
    "grunt-contrib-copy": "^0.7.0",
    "grunt-contrib-cssmin": "^0.12.0",
    "grunt-contrib-htmlmin": "^0.4.0",
    "grunt-contrib-imagemin": "^1.0.0",
    "grunt-contrib-jshint": "^0.11.0",
    "grunt-contrib-uglify": "^0.7.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-filerev": "^2.1.2",
    "grunt-google-cdn": "^0.4.3",
    "grunt-jscs": "^1.8.0",
    "grunt-newer": "^1.1.0",
    "grunt-ng-annotate": "^0.9.2",
    "grunt-postcss": "^0.5.5",
    "grunt-svgmin": "^2.0.0",
    "grunt-usemin": "^3.0.0",
    "grunt-wiredep": "^2.0.0",
    "imagemin": "^5.2.1",
    "jasmine-core": "^2.4.1",
    "jit-grunt": "^0.9.1",
    "jshint-stylish": "^1.0.0",
    "karma": "^0.13.22",
    "karma-jasmine": "^1.0.2",
    "karma-phantomjs-launcher": "^1.0.0",
    "phantomjs-prebuilt": "^2.1.7",
    "readable-stream": "^2.1.4",
    "through2": "^2.0.1",
    "time-grunt": "^1.0.0",
    "vinyl-fs": "^2.2.1"
  },
  "engines": {
    "node": ">=0.10.0"
  },
  "scripts": {
    "test": "karma start test\\karma.conf.js"
  }
}

注意:到目前为止还没有找到解决方案,我要去 Azure 支持团队看看我能做什么。找到任何解决方案后,我会更新问题。

4

2 回答 2

2

大多数类似的 问题(虽然不是天蓝色)都指向:

npm install grunt --save-dev
npm install -g grunt --save-dev

-g(如果您grunt要从脚本中使用,请尝试全局安装)

该线程提到 grunt 应该安装并存在于PATHfor azure 中:

问题不在于在路径(“ ”)grunt上找不到。D:\Program Files (x86)\grunt\0.1.13\grunt它肯定会开始运行,但它grunt本身会抱怨。
如果我要Kudu控制台并gruntD:\home\site\repository文件夹中运行“”,它会显示完全相同的内容。

projectkudu/kudu问题 1150确认:

在本地(即在 Azure 之外)运行 Kudu 时不会发生这种情况。
因此,Azure 网站上的运行时环境可能有些时髦。

grunt issue 1459所示,检查退出状态错误代码:

$ echo $?
99

我们先重命名node_modules/grunt目录,这样grunt-cli就找不到本地的grunt了。这将导致错误代码 99。

预期的结果发生了,这让我相信误导性的grunt-cli错误消息让开发人员误以为 Grunt 本身正在返回错误的错误代码。

因此,在 Azure 的情况下,grunt 可能已安装并位于路径上,但不是grunt-cli预期的位置。

于 2016-06-20T07:06:22.073 回答
2

控制您的 package.json 具有以下行。

"devDependencies": {
    "grunt": "~0.4.5",
 ..
 }

Grunt-cli 期望你的项目中有本地的 grunt。这个错误

致命错误:无法找到本地咕噜声。

是关于这个本地 grunt。由于您的脚本已经执行npm install,您只需将"grunt": "~0.4.5"行添加到依赖项中的 package.json 即可。

以下命令也做同样的事情,即向 devDependencies 添加 grunt。

npm install grunt --save-dev
于 2016-06-21T21:00:03.947 回答