当子文件夹包含长路径文件时,Azure Web 角色不会启动
Azure Web Role wont start when child folder has files with long paths
一点非常遥远的帮助和一点挥之不去的问题。
在过去的几天里,我一直在努力解决一个非常令人沮丧的 Azure Web 角色问题。基本上我的工作流程如下:
- 创建一个全新的 Azure 云服务项目
- 添加 C# ASP.NET Web 角色(Web API)
- 构建并确认项目将在本地启动
你应该对这里很好。当我将 Git 存储库克隆到 Web API 项目目录时(该存储库在节点中包含一个简单的 UI 开发服务器和所有已编译的 UI资产)。我花了一些时间来整理,但本质上,一些嵌套节点依赖项的文件路径太长(依赖项有依赖项有依赖项等)并挂起了 Web 角色。
如果您想自己尝试,您可以在 Web API 项目中包含一个包含长路径文件的文件夹,或者构建一个简单的 git 存储库并使用 npm 安装一些包. UI 回购的 package.json 如下:
{
"name": "BreaksMyHeart",
"version": "1.0.0",
"description": "Wont let the web role start",
"main": "index.js",
"dependencies": {
"co-views": "^0.3.0",
"flux": "^2.0.1",
"gulp-minify-css": "^1.0.0",
"jade": "^1.9.2",
"koa": "^0.18.1",
"koa-compress": "^1.0.8",
"koa-route": "^2.4.0",
"koa-static": "^1.4.9",
"object-assign": "^2.0.0",
"react": "^0.13.1"
},
"devDependencies": {
"bower": "^1.4.1",
"browserify": "^9.0.4",
"coffee-reactify": "^3.0.0",
"gulp": "^3.8.11",
"gulp-batch": "^1.0.5",
"gulp-coffee-react-transform": "0.0.2",
"gulp-coffeelint": "^0.4.0",
"gulp-concat": "^2.5.2",
"gulp-imagemin": "^2.2.1",
"gulp-nodemon": "^2.0.2",
"gulp-react": "^3.0.1",
"gulp-rename": "^1.2.2",
"gulp-sourcemaps": "^1.5.1",
"gulp-uglify": "^1.1.0",
"gulp-util": "^3.0.4",
"gulp-watch": "^4.2.4",
"imagemin-pngquant": "^4.0.0",
"koa-logger": "^1.2.2",
"merge-stream": "^0.1.7",
"mocha": "^2.2.4",
"supertest": "^0.15.0",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0",
"vinyl-transform": "^1.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Mike",
"license": "MIT"
}
明确地说,我没有在项目中包含 node_modules 目录,但这似乎没有什么不同。
Azure Compute Emulator 将警告你角色启动的时间比平时长。请继续等待,大约 10 分钟后我失去了耐心(在具有 i7 和 16G ram 的开发机器上)。
要解决此问题,请尝试删除该文件夹。您可能会发现这不是一项简单的任务,因为文件路径太长;天真
rmdir UIRepo
从命令提示符是不够的,您需要尝试这样的操作 https://superuser.com/questions/256105/how-do-i-delete-a-folder-which-is-nested-quite-deep-and-avoid-file-name-too-lon
还有人可以确认一下吗?我通过将 UI 存储库放在其他地方并适当地重新指向 gulp 构建任务来解决这个问题。
这是 node_modules 的常见问题,因为 Windows 的路径长度限制为 260 个字符。当超过这个值时,访问这些长路径的程序将出现您提到的问题。
要摆脱长路径,您可以考虑使用 shrinkwrap:
npm shrinkwrap
这会根据您当前的 node_modules 结构生成 npm-shrinkwrap.json
,该结构将用于驱动进一步安装包依赖项而无需嵌套(如果不是真的需要,因为版本不同)。
The shrinkwrap command has locked down the dependencies based on
what's currently installed in node_modules. When npm install installs
a package with an npm-shrinkwrap.json in the package root, the
shrinkwrap file (rather than package.json files) completely drives the
installation of that package and all of its dependencies (recursively)
一点非常遥远的帮助和一点挥之不去的问题。
在过去的几天里,我一直在努力解决一个非常令人沮丧的 Azure Web 角色问题。基本上我的工作流程如下:
- 创建一个全新的 Azure 云服务项目
- 添加 C# ASP.NET Web 角色(Web API)
- 构建并确认项目将在本地启动
你应该对这里很好。当我将 Git 存储库克隆到 Web API 项目目录时(该存储库在节点中包含一个简单的 UI 开发服务器和所有已编译的 UI资产)。我花了一些时间来整理,但本质上,一些嵌套节点依赖项的文件路径太长(依赖项有依赖项有依赖项等)并挂起了 Web 角色。
如果您想自己尝试,您可以在 Web API 项目中包含一个包含长路径文件的文件夹,或者构建一个简单的 git 存储库并使用 npm 安装一些包. UI 回购的 package.json 如下:
{
"name": "BreaksMyHeart",
"version": "1.0.0",
"description": "Wont let the web role start",
"main": "index.js",
"dependencies": {
"co-views": "^0.3.0",
"flux": "^2.0.1",
"gulp-minify-css": "^1.0.0",
"jade": "^1.9.2",
"koa": "^0.18.1",
"koa-compress": "^1.0.8",
"koa-route": "^2.4.0",
"koa-static": "^1.4.9",
"object-assign": "^2.0.0",
"react": "^0.13.1"
},
"devDependencies": {
"bower": "^1.4.1",
"browserify": "^9.0.4",
"coffee-reactify": "^3.0.0",
"gulp": "^3.8.11",
"gulp-batch": "^1.0.5",
"gulp-coffee-react-transform": "0.0.2",
"gulp-coffeelint": "^0.4.0",
"gulp-concat": "^2.5.2",
"gulp-imagemin": "^2.2.1",
"gulp-nodemon": "^2.0.2",
"gulp-react": "^3.0.1",
"gulp-rename": "^1.2.2",
"gulp-sourcemaps": "^1.5.1",
"gulp-uglify": "^1.1.0",
"gulp-util": "^3.0.4",
"gulp-watch": "^4.2.4",
"imagemin-pngquant": "^4.0.0",
"koa-logger": "^1.2.2",
"merge-stream": "^0.1.7",
"mocha": "^2.2.4",
"supertest": "^0.15.0",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0",
"vinyl-transform": "^1.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Mike",
"license": "MIT"
}
明确地说,我没有在项目中包含 node_modules 目录,但这似乎没有什么不同。
Azure Compute Emulator 将警告你角色启动的时间比平时长。请继续等待,大约 10 分钟后我失去了耐心(在具有 i7 和 16G ram 的开发机器上)。
要解决此问题,请尝试删除该文件夹。您可能会发现这不是一项简单的任务,因为文件路径太长;天真
rmdir UIRepo
从命令提示符是不够的,您需要尝试这样的操作 https://superuser.com/questions/256105/how-do-i-delete-a-folder-which-is-nested-quite-deep-and-avoid-file-name-too-lon
还有人可以确认一下吗?我通过将 UI 存储库放在其他地方并适当地重新指向 gulp 构建任务来解决这个问题。
这是 node_modules 的常见问题,因为 Windows 的路径长度限制为 260 个字符。当超过这个值时,访问这些长路径的程序将出现您提到的问题。 要摆脱长路径,您可以考虑使用 shrinkwrap:
npm shrinkwrap
这会根据您当前的 node_modules 结构生成 npm-shrinkwrap.json
,该结构将用于驱动进一步安装包依赖项而无需嵌套(如果不是真的需要,因为版本不同)。
The shrinkwrap command has locked down the dependencies based on what's currently installed in node_modules. When npm install installs a package with an npm-shrinkwrap.json in the package root, the shrinkwrap file (rather than package.json files) completely drives the installation of that package and all of its dependencies (recursively)