为什么 babel 在 USERPROFILE 路径中存储 .babel.json
why babel stores .babel.json in USERPROFILE path
我是 运行 Azure 网络应用程序上的 nodejs 应用程序,我正在尝试使用 npm 在其中集成 babel。问题是 babel 试图访问位于
的文件
%USERPROFILE%
名为 .babel.json,一个不存在的文件。这很可能是由以下人员安装的:
npm install -g babel
在 azure web 应用程序上,我似乎根本找不到它(即使在站点的 kudu 中 运行 npm install -g babel
之后)。
我使用 kudu 自己将 %USERPROFILE%
中的文件复制到 %USERPROFILE%
,但在网络应用程序重新启动时文件消失了。
有没有办法让 babel 在网络应用程序上运行?
更新
我确实遗漏了一些东西。当我尝试加载 babel/register
.
时出现错误
require('babel/register')({
optional: ["es7.asyncFunctions"]
});
我在流式日志中看到的实际错误是
Application has thrown an uncaught exception and is terminated: Error:
ENOENT, no such file or directory 'D:\local\UserProfile.babel.json'
at Object.fs.openSync (fs.js:438:18)
at Object.fs.writeFileSync (fs.js:977:15)
at save (D:\home\site\wwwroot\node_modules\babel\node_modules\babel-core\lib\api\register\cache.js:35:19)
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3
项目在Github
我从 Azure Gallery "Node JS Empty Web app" 和 运行 在 Kudu 中的命令 npm install -g babel
创建了一个 nodejs 应用程序。我试图重现您的问题,但失败了,因为 babel 没有尝试访问文件 .babel.json at %USERPROFILE%.
在 Azure 上,npm 全局模块将安装到路径 "D:\local\AppData" 中。当您重新启动 WebApp 时,节点全局模块将被删除。
如果必须使用node全局模块,可以为node web role配置启动任务,在云服务web role启动时安装node modules。请参考https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.
通常,在 Azure Web Apps 上的 Kudu 调试控制台 "wwwroot" 路径下使用 npm install <module-name>
安装节点模块。
我尝试在路径 "wwwroot" 和 运行 命令 node_module\.bin\babel
安装 babel 模块,并写入一个包含代码 require('babel')
到 [=32] 的文件=] 它成功了。效果很好。
此致。
The error appeared when i tried load 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 上运行。如果您想了解使用 node.js 在 Azure 网站中访问应用程序设置的详细信息,请参阅 http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx。
如果您还有任何疑问,请随时告诉我们。
我有同样的问题,通过在我的应用程序设置中设置环境变量 BABEL_DISABLE_CACHE=1
来禁用 babel 缓存来解决它。
您可以在此处阅读有关 babel 缓存的更多信息:
https://babeljs.io/docs/usage/require/#environment-variables
您将 .babel.json
的商店位置更改为 BABEL_CACHE_PATH
我认为它比禁用缓存更好
BABEL_CACHE_PATH=any_writable_and_exist_dir/babel.cache.json
我是 运行 Azure 网络应用程序上的 nodejs 应用程序,我正在尝试使用 npm 在其中集成 babel。问题是 babel 试图访问位于
的文件%USERPROFILE%
名为 .babel.json,一个不存在的文件。这很可能是由以下人员安装的:
npm install -g babel
在 azure web 应用程序上,我似乎根本找不到它(即使在站点的 kudu 中 运行 npm install -g babel
之后)。
我使用 kudu 自己将 %USERPROFILE%
中的文件复制到 %USERPROFILE%
,但在网络应用程序重新启动时文件消失了。
有没有办法让 babel 在网络应用程序上运行?
更新
我确实遗漏了一些东西。当我尝试加载 babel/register
.
require('babel/register')({
optional: ["es7.asyncFunctions"]
});
我在流式日志中看到的实际错误是
Application has thrown an uncaught exception and is terminated: Error: ENOENT, no such file or directory 'D:\local\UserProfile.babel.json' at Object.fs.openSync (fs.js:438:18) at Object.fs.writeFileSync (fs.js:977:15) at save (D:\home\site\wwwroot\node_modules\babel\node_modules\babel-core\lib\api\register\cache.js:35:19) at process._tickCallback (node.js:419:13) at Function.Module.runMain (module.js:499:11) at startup (node.js:119:16) at node.js:906:3
项目在Github
我从 Azure Gallery "Node JS Empty Web app" 和 运行 在 Kudu 中的命令 npm install -g babel
创建了一个 nodejs 应用程序。我试图重现您的问题,但失败了,因为 babel 没有尝试访问文件 .babel.json at %USERPROFILE%.
在 Azure 上,npm 全局模块将安装到路径 "D:\local\AppData" 中。当您重新启动 WebApp 时,节点全局模块将被删除。
如果必须使用node全局模块,可以为node web role配置启动任务,在云服务web role启动时安装node modules。请参考https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.
通常,在 Azure Web Apps 上的 Kudu 调试控制台 "wwwroot" 路径下使用 npm install <module-name>
安装节点模块。
我尝试在路径 "wwwroot" 和 运行 命令 node_module\.bin\babel
安装 babel 模块,并写入一个包含代码 require('babel')
到 [=32] 的文件=] 它成功了。效果很好。
此致。
The error appeared when i tried load 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 上运行。如果您想了解使用 node.js 在 Azure 网站中访问应用程序设置的详细信息,请参阅 http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx。
如果您还有任何疑问,请随时告诉我们。
我有同样的问题,通过在我的应用程序设置中设置环境变量 BABEL_DISABLE_CACHE=1
来禁用 babel 缓存来解决它。
您可以在此处阅读有关 babel 缓存的更多信息: https://babeljs.io/docs/usage/require/#environment-variables
您将 .babel.json
的商店位置更改为 BABEL_CACHE_PATH
我认为它比禁用缓存更好
BABEL_CACHE_PATH=any_writable_and_exist_dir/babel.cache.json