将模型导入为对象,而不是在使用Express的Node.js项目中运行
我有一个使用快递的node.js项目。 在这个项目中,我有一个models
文件夹,其中包含项目中使用的不同模型。
在我的MosaicParTileStreamerS3Only
模型中,我有以下几点:
'use strict'; var GlobalMercator = require('./GlobalMercator.js'); var S3 = require('./S3.js'); var binary = require('binary'); var bufferpack = require('bufferpack'); function MosaicParTileStreamerS3Only() { };
进一步进入这个模型,我使用S3
没有任何问题:
MosaicParTileStreamerS3Only.prototype.Init = function(filepath, index, s3config){ var retval = false; this.s3 = new S3(s3config.access_key, s3config.secret_key, s3config.host); var host = s3config.host; var bucket = s3config.bucket; filepath = s3config.tile_directory + filepath; var request = this.s3.getObject(bucket, filepath, false, 0, this.HEADER_SIZE + 5 * this.RESOLUTION_ENTRY_SIZE + this.TILE_COUNT_SIZE + 256 * this.TILE_ENTRY_SIZE); ...
在第二行放置一个断点( this.s3 = new S3(s3config.access_key, s3config.secret_key, s3config.host);
)显示S3
作为一个函数被引入。
我有我的S3Request.js
的以下S3Request.js
:
“严格使用”;
var S3 = require('./S3.js'); var STDClass = require('stdclass'); var Curl = require('node-libcurl').Curl; var parseString = require('xml2js').parseString; function S3Request(verb, bucket, uri, endpoint){ this.headers = ''; this.endpoint = endpoint; this.verb = verb; this.bucket = bucket; this.uri = (uri !== '' ? '/' + '%2F'.replace('/', encodeURIComponent(uri)) : '/'); ... }
后来在这个模型中,我尝试使用S3
:
var test = new S3(); headers['Authorization'] = S3.getSignature(this.verb + '\n' + this.headers['Content-MD5'] + "\n" + this.headers['Content-Type'] + "\n" + this.headers["Date"] + amz + "\n" + this.resource);
我得到以下错误:
TypeError:S3不是一个函数
把一个断点放在var test = new S3();
显示在这个文件中S3
被认为是一个对象:
任何线索怎么了?
问题是S3
和S3Request
之间存在循环依赖关系。
请参阅如何处理Node.js中的循环依赖关系
- 节点js中的AWS SDK javascript返回访问被拒绝
- 使用ec2创build存储在s3上的图像的缩略图,并在完成时与导轨进行通信的优雅方法?
- 亚马逊S3和节点jsvideostream和缩略图?
- 简单的WebApp – 通过HTML / AWS Javascript SDK将file upload到S3
- aws-sdk上传到S3在KOA中工作,但在通过Mocha调用时停止工作
- Amazon S3提供InvalidDigest:您指定的Content-MD5无效
- 使用节点jsencryption文件并在PostgreSQL中解密文件
- NodeJS:使用请求和knox将远程file upload到S3
- 获取stream的内容长度