Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AWS EC2访问节点应用中具有相对路径的文件_Node.js_Amazon Web Services_Amazon Ec2_Amazon Ecs - Fatal编程技术网

Node.js AWS EC2访问节点应用中具有相对路径的文件

Node.js AWS EC2访问节点应用中具有相对路径的文件,node.js,amazon-web-services,amazon-ec2,amazon-ecs,Node.js,Amazon Web Services,Amazon Ec2,Amazon Ecs,我在EC2实例上部署并运行了一个节点(v10)应用程序。因此,我正在尝试写入应用程序内资产目录中的一个文件。我在app.js中声明了路径 app.set('assets',path.join(__dirname, 'assets')); 在我的剧本中,我就是这样做的 let fileName = 'data.json' fs.writeFile('assets/'+fileName, response.Body.toString('ascii'),(err) => { if(err) c

我在EC2实例上部署并运行了一个节点(v10)应用程序。因此,我正在尝试写入应用程序内资产目录中的一个文件。我在app.js中声明了路径

app.set('assets',path.join(__dirname, 'assets'));
在我的剧本中,我就是这样做的

let fileName = 'data.json'
fs.writeFile('assets/'+fileName, response.Body.toString('ascii'),(err) => { if(err) console.log(err); });
data.json文件位于assets目录中。当我在本地环境中测试它时,它工作得很好。但当我在部署的应用程序中测试它时,我得到以下错误:

[Error: ENOENT: no such file or directory, open 'assets/data.json'] {
data:    bin/www:89 -   errno: -2,
data:    bin/www:89 -   code: 'ENOENT',
data:    bin/www:89 -   syscall: 'open',
data:    bin/www:89 -   path: 'assets/data.json'
data:    bin/www:89 - }

当部署到EC2实例上时,您可以帮助我如何访问该文件。

您应该试试

fs.writeFile(__dirname + 'assets/'+fileName, response.Body.toString('ascii'),(err) => { if(err) console.log(err); });
as
\uu dirname
将为您提供节点应用程序所在的当前目录

当您设置
资产
值时

目前,您正在尝试以绝对路径访问
/assets
,这在Ubuntu或任何linux中都不存在。

您应该试试

fs.writeFile(__dirname + 'assets/'+fileName, response.Body.toString('ascii'),(err) => { if(err) console.log(err); });
as
\uu dirname
将为您提供节点应用程序所在的当前目录

当您设置
资产
值时


目前,您正在尝试以绝对路径访问
/assets
,而这在Ubuntu或任何linux中都不存在。

您没有使用前面设置的变量。您应该这样使用它:

fs.writeFile(app.settings.assets + '/' + fileName, response.Body.toString('ascii'),(err) => { if(err) console.log(err); });

另外,听起来好像EC2实例上还没有
assets
文件夹。您可能需要先调用
fs.mkdir(app.settings.assets)

您没有使用前面设置的变量。您应该这样使用它:

fs.writeFile(app.settings.assets + '/' + fileName, response.Body.toString('ascii'),(err) => { if(err) console.log(err); });

另外,听起来好像EC2实例上还没有
assets
文件夹。您可能需要先调用
fs.mkdir(app.settings.assets)

嘿。因此,我在另一个脚本中使用fs操作。我正在app.js中将app模块导出为
module.exports=app
。我正在脚本中以
const-app=require('../app')的形式导入应用程序。因此,当我尝试app.settings.assets时,我得到一个错误,即
TypeError:无法读取未定义的属性“assets”。因此,我在另一个脚本中使用fs操作。我正在app.js中将app模块导出为
module.exports=app
。我正在脚本中以
const-app=require('../app')的形式导入应用程序。因此,当我尝试app.settings.assets时,我得到一个错误,即
TypeError:无法读取未定义的属性“assets”。因此,我在另一个脚本中使用fs操作。我正在以
const app=require('../app')
的形式导入应用程序模块。当我使用app.get('assets')时,我得到一个错误,即app.get不是函数hey。因此,我在另一个脚本中使用fs操作。我正在以
const app=require('../app')
的形式导入应用程序模块。当我使用app.get('assets')时,我得到的错误是app.get不是函数