Я создал сервер загрузки файлов jquery node blueimp в экземпляре Joyent Cloud SmartOS SmartMachine (nodejs 13.1.0).
Он отлично работает, если я запускаю его вручную с помощью команды ./node_modules/blueimp-file-upload-node/server.js.
Однако, если запустить его с помощью SMF, сервер сможет ответить на GET и доставить изображения, но не сможет принимать POST и прерывания. Ниже представлен манифест шаблона, журналы ошибок клиента и сервера. Любая помощь о том, как я могу создать манифест, чтобы получать POST, очень ценится.
Request URL:
http://sub1.mydomain.com:8888/node_modules/blueimp-file-upload-node/server.js
Request Headers CAUTION: Provisional headers are shown.
Accept:
application/json, text/javascript, */*; q=0.01
Content-Type:
multipart/form-data; boundary=----WebKitFormBoundary4x1QBIUsPyFwN0xP
Origin:
http://sub1.mydomain.com
Referer:
http://sub1.mydomain.com
User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.19 Safari/537.36
Request Payload
------WebKitFormBoundary4x1QBIUsPyFwN0xP
Content-Disposition: form-data; name="send-message"
------WebKitFormBoundary4x1QBIUsPyFwN0xP
Content-Disposition: form-data; name="files[]"; filename="84a0ff8ef9ba11e1afba1231380fc0f9_7.jpg"
Content-Type: image/jpeg
------WebKitFormBoundary4x1QBIUsPyFwN0xP--
SMF проявляет только то, что я изменяю после первого для каждого случая:
<service_bundle type="manifest" name="kamkam">
<service name="site/kamkam-service" type="service" version="1">
<create_default_instance enabled="true"/>
<single_instance/>
<dependency name="network" grouping="require_all" restart_on="refresh" type="service">
<service_fmri value="svc:/milestone/network:default"/>
</dependency>
<dependency name="filesystem" grouping="require_all" restart_on="refresh" type="service">
<service_fmri value="svc:/system/filesystem/local"/>
</dependency>
<method_context working_directory="/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node">
<method_credential user="root"/>
<method_environment>
<envvar name="PATH" value="/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin"/>
<envvar name="HOME" value="/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node"/>
<envvar name="NODE_ENV" value="production"/>
</method_environment>
</method_context>
<exec_method
type="method"
name="start"
exec="/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/server.js"
timeout_seconds="60"/>
<exec_method
type="method"
name="stop"
exec=":kill"
timeout_seconds="60"/>
<property_group name="startd" type="framework">
<propval name="duration" type="astring" value="child"/>
<propval name="ignore_error" type="astring" value="core,signal"/>
</property_group>
<property_group name="application" type="application">
</property_group>
<stability value="Evolving"
/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload- node/node_modules/formidable/lib/incoming_form.js:28
this.uploadDir = opts.uploadDir || os.tmpDir();
^
TypeError: Object #<Object> has no method 'tmpDir'
at new IncomingForm (/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload- node/node_modules/formidable/lib/incoming_form.js:28:41)
at [object Object].post (/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/server.js:211:20)
at Server.<anonymous> (/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/server.js:134:25)
at Server.emit (events.js:67:17)
at HTTPParser.onIncoming (http.js:1124:12)
at HTTPParser.onHeadersComplete (http.js:108:31)
at Socket.ondata (http.js:1019:22)
at Socket._onReadable (net.js:683:27)
at IOWatcher.onReadable [as callback] (net.js:177:10)
<method_credential user="admin" group="staff" privileges="basic,net_privaddr,file_chown,file_chown_self,file_dac_read,file_dac_search,file_dac_write,file_owner"/>
exec="/opt/local/bin/node /home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/server.js"
events.js:72
throw er; // Unhandled 'error' event
^
Error: EACCES, open '/home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/tmp/09008ecbfafd1c3570eff7ae0ae52fa8'
[ Nov 25 15:41:29 Stopping because all processes in service exited. ]
<method_credential user="root"/>
exec="/opt/local/bin/node /home/projects/egoer/sub1.mydomain.com/node_modules/blueimp-file-upload-node/server.js"
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:975:11)
at Process.ChildProcess._handle.onexit (child_process.js:766:34)
[ Nov 25 16:00:16 Stopping because all processes in service exited. ]