首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure和节点js __dirname

Azure和节点js __dirname
EN

Stack Overflow用户
提问于 2016-07-03 20:22:17
回答 5查看 1.9K关注 0票数 3

可能它与webpack/memory-fs没有具体关系,但是我得到了RangeError: Maximum call stack size exceeded错误(关于调用堆栈,请参阅下面的内容)。

我发现,在我的情况下,__dirname on Azure (webapp)返回\\100.78.172.13\volume-7-default\8f5ecde749dace2bb57a\4e07195f015b45ce8e9ba255dc901988\site\repository\Source\Website\Content\app\node_modules\webpack\node_modules\memory-fs\lib\normalize.js,而process.cwd()返回D:\home\site\repository\Source\Website\Content\app

从我这边可以做些什么来配置节点js来返回D:\...而不是\\..

要旨

如何复制:

  1. 克隆https://github.com/intellismiths/webapp1存储库。
  2. 创建新的Azure Web应用程序(默认设置)。
  3. 将部署源配置为使用GitHub。
  4. 单击Sync。这将需要10+分钟来完成,这将显示部署是成功的。
  5. 转到Azure中的应用程序设置,并将WEBSITE_NODE_DEFAULT_VERSION更改为6.2.2
  6. 转到kudu页面并打开powershell控制台。
  7. 执行npm cache clean
  8. 通过执行node -v检查节点版本。应该是v6.2.2
  9. 在Azure上,导航到D:\home\site\respository\src\WebApp1
  10. 执行npm run build
  11. 在控制台中,您应该会看到许多错误,这表明模块无法解析
  12. 可选的。在本地机器上测试npm run build --它应该生成没有错误的wwwroot/app.js
  13. 更新webpack.config.js以包括context: __dirname以修复以前的错误。
  14. 执行npm run build
  15. 在控制台中,您应该会看到"RangeError:最大调用堆栈大小超过“错误。

更新1

我只是在添加了第二个package.json之后才尝试设置6.2.2运行时,所以项目结构不是最简单的。也许只需将节点设置为6.2.2就会破坏构建。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-07-05 06:59:42

我可以按照你的步骤重复你的问题。我发现关键是将WEBSITE_NODE_DEFAULT_VERSION设置为6.2.2。我发现,如果WEBSITE_NODE_DEFAULT_VERSION6之下,webpack的任务就能正常工作。

如果您的WEBSITE_NODE_DEFAULT_VERSION模块不需要如此高的版本,请将其设置为6下的版本,例如5.9.0

根据package.json of angular2 athttps://github.com/angular/angular/blob/master/package.json,angular2存储库似乎需要5.46之间的node.js版本。

此外,Azure上web应用程序的根目录是D:\home\site\wwwroot。因此,如果您想在Azure上构建前端项目,您需要定位到D:\home\site\wwwroot\wwwroot\mobile-web-app,然后运行npm run build

票数 4
EN

Stack Overflow用户

发布于 2016-08-15 15:35:45

它已经在master中得到了修正,并被建议包含在v6.4.0中。

见:https://github.com/nodejs/node/issues/7175#issuecomment-239824532https://github.com/nodejs/node/pull/8070

票数 3
EN

Stack Overflow用户

发布于 2016-07-07 22:35:18

经过一整天的研究、试验和各种实验,我找到了一个可以接受的解决办法,如果你不愿意降级到Node 5.*

  • 降级至节点6.1.0
  • 确保在全球范围内安装webpack (用npm install -g webpack)。

仅使用6.1.0就可以避免“最大调用堆栈大小超出”错误,但在从node_modules (使用./node_modules/.bin/webpack)运行webpack时却给了我很多解决失败的机会。在全球范围内安插webpack,终于让我过去了。

如果我正确理解了这个问题,__dirname在Node >= 6.2中解析到UNC文件夹路径而不是挂载路径的整个问题将被修复,这里有一个活跃的讨论这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38173996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档