11

我在 azure web 应用程序上运行 nodejs 应用程序,我正在尝试在其中使用 npm 集成 babel。问题是 babel 试图访问一个文件

%用户资料%

名为 .babel.json,一个不存在的文件。这很可能是由以下人员安装的:

npm install -g babel

在 azure web 应用程序上,我似乎根本找不到它(即使npm install -g babel在 kudu 中运行该站点之后)。

我将自己的文件复制%USERPROFILE%%USERPROFILE%使用 kudu 但在网络应用程序重新启动时文件消失了。

有没有办法让 babel 在 web 应用程序上工作?

更新

我确实省略了一些东西。当我尝试加载时出现错误babel/register

require('babel/register')({
  optional: ["es7.asyncFunctions"]
});

我在流日志中看到的实际错误是

应用程序已引发未捕获的异常并终止:错误:ENOENT,在 Object.fs 的 Object.fs.openSync (fs.js:438:18) 处没有此类文件或目录 'D:\local\UserProfile.babel.json' .writeFileSync (fs.js:977:15) 在保存 (D:\home\site\wwwroot\node_modules\babel\node_modules\babel-core\lib\api\register\cache.js:35:19) 在进程。 _tickCallback (node.js:419:13) 在 Function.Module.runMain (module.js:499:11) 在启动时 (node.js:119:16) 在 node.js:906:3

该项目在Github上

4

4 回答 4

20

我遇到了同样的问题,通过BABEL_DISABLE_CACHE=1在我的应用程序设置中设置环境变量来禁用 babel 缓存来解决它。

您可以在此处阅读有关 babel 缓存的更多信息: https ://babeljs.io/docs/usage/require/#environment-variables

于 2015-12-01T17:06:44.540 回答
4

.babel.json您通过 BABEL_CACHE_PATH更改存储位置

我认为它比禁用缓存更好

BABEL_CACHE_PATH=any_writable_and_exist_dir/babel.cache.json

于 2016-05-22T04:03:01.493 回答
3

当我尝试加载 babel/register 时出现错误。

请检查 (..\node_modules\babel\node_modules\babel-core\lib\api\register\Cache.js) 的 Cache.js 是否有任何 babel 缓存路径定义,例如

process.env.BABEL_CACHE_PATH || _path2["default"].join(_homeOrTmp2["default"], ".babel.json");

如果您利用这种变量,则需要让 BABEL_CACHE_PATH 应用程序设置 ./cache 的键和值,否则任何带有 babel 的东西都无法在 azure 上运行。请参考http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx如果您想了解使用 node.js 在 Azure 网站中访问应用程序设置的详细信息。

如果您有任何进一步的疑虑,请随时告诉我们。

于 2015-10-14T07:40:54.667 回答
0

我从 Azure Gallery “Node JS Empty Web app”创建了一个 nodejs 应用程序,并npm install -g babel在 Kudu 中运行该命令。我试图重现您的问题,但失败的是 babel 没有尝试访问 %USERPROFILE% 处的文件 .babel.json。

在 Azure 上,npm 全局模块将安装到路径“D:\local\AppData”中。当您重新启动 WebApp 时,节点全局模块将被删除。

如果必须使用节点全局模块,可以为节点 Web 角色配置启动任务,以便在云服务中启动 Web 角色时安装节点模块。请参考https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/

npm install <module-name>通常,使用Azure Web Apps 上 Kudu 调试控制台的路径“wwwroot”安装节点模块。

我尝试将 babel 模块安装在路径“wwwroot”并运行命令node_module\.bin\babel,并编写一个包含代码的文件require('babel')以成功运行它。它工作正常。

此致。

于 2015-09-25T07:12:35.917 回答