Đối số của require(...)
trong node.js là tên tệp. Nếu tôi có mã nguồn mô-đun trong một chuỗicode
, tôi có thể gọi hàm require(code)
và tải từ chuỗi đó không?Yêu cầu trong nodejs
Trả lời
Công việc xung quanh có thể là viết mã nguồn mô-đun vào một tệp tạm thời ./tmp-file.js
và sau đó require('./tmp-file')
, sau đó xóa tệp.
Điều này có lẽ không tối ưu vì bạn sẽ phải chặn và ghi tệp một cách đồng bộ hoặc đặt tất cả mọi thứ yêu cầu mô-đun đó trong gọi lại để viết async.
Một ví dụ làm việc cho tập tin async ghi (gist - also includes sync file write):
var http = require('http');
var fs = require('fs');
var helloModuleString = "exports.world = function() { return 'Hello World\\n'; }";
fs.writeFile('./hello.js', helloModuleString, function (err) {
if (err) return console.log(err);
var hello = require('./hello');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(hello.world());
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
});
Kết quả trong:
$ curl 127.0.0.1:1337
> Hello World
Cảm ơn, âm thanh như một giải pháp cơ bản tốt. – Cartesius00
Nói chung tôi đồng ý, nhưng điều đó đòi hỏi ứng dụng nút phải được phép tạo tệp trên hệ thống tệp. Và nếu bạn bắt đầu nhiều phiên bản của ứng dụng nút, bạn phải quyết định phải làm gì với tệp hoặc vùng tên của chúng bằng cách nào đó. Tôi đã cố gắng thêm tiện ích mở rộng tùy chỉnh nhưng hiện không còn được dùng nữa. Không có giải pháp tốt nào khác? –
tôi đặt này vào một chức năng để tái sử dụng. Nó tạo ra một tập tin trong thư mục temp os dựa trên một băm ngẫu nhiên, yêu cầu nó và sau đó xóa nó.
var fs = require('fs'),
os = require('os'),
crypto = require('crypto');
function requireString(moduleString) {
var token = crypto.randomBytes(20).toString('hex'),
filename = os.tmpdir() + '/' + token + '.js',
requiredModule = false;
// write, require, delete
fs.writeFileSync(filename, moduleString);
requiredModule = require(filename);
fs.unlinkSync(filename);
return requiredModule;
}
Sau đó, bạn có thể làm:
var carString = "exports.start = function(){ console.log('start'); };",
car = requireString(carString);
console.log("Car:", car);
này vẫn còn nhiều hơn một workaround, nhưng thuận tiện hơn để sử dụng, tôi nghĩ.
đẹp, cảm ơn bạn – Cartesius00
- 1. Yêu cầu HTTPS trong NodeJS
- 2. Nodejs + Yêu cầu instanceof behavior
- 3. Các yêu cầu về NodeJs ('./ file.js')
- 4. Nodejs POST yêu cầu multipart/form-data
- 5. Nhận một json qua Http Yêu cầu trong NodeJS
- 6. HTTP Client dựa trên NodeJS: Cách xác thực yêu cầu?
- 7. Sử dụng nodejs async và yêu cầu mô-đun
- 8. NodeJS - Cách tải tệp xuống qua Yêu cầu?
- 9. Phát hiện các yêu cầu AJAX trên NodeJS với Express
- 10. NodeJS dừng đáp ứng sau 11 yêu cầu
- 11. nodejs thư viện yêu cầu, có thời gian phản ứng
- 12. Yêu cầu gọi điện cho máy chủ web Nodejs yêu cầu hai lần khi trang được tải
- 13. Cách đặt Độ dài nội dung khi gửi yêu cầu POST trong NodeJS?
- 14. Trong php, yêu cầu trong tập tin yêu cầu?
- 15. Yêu cầu jQuery Ajax bên trong Yêu cầu Ajax
- 16. Nodejs thể hiện tiêu đề yêu cầu - nhận được liên kết giới thiệu, v.v.
- 17. NodeJS: bất kỳ mô-đun để hạn chế tỷ lệ yêu cầu nhanh
- 18. NodeJS máy chủ incrementing biến bởi hai cho mọi yêu cầu
- 19. Nodejs + expressjs phát lại yêu cầu sau khi máy chủ hết giờ
- 20. NodeJS - Làm thế nào để dòng yêu cầu cơ thể mà không đệm
- 21. nodejs, socket.io: cách nhận yêu cầu và phản hồi từ chức năng socket?
- 22. Làm cách nào để nhận được url được chuyển hướng từ mô-đun yêu cầu nodejs?
- 23. Yêu cầu nhiều yêu cầu PHP
- 24. Yêu cầu chặn trong Chrome
- 25. Yêu cầu HTTPS trong Ruby
- 26. Yêu cầu HTTP trong Ubuntu
- 27. Làm thế nào để xếp hàng http nhận được yêu cầu trong Nodejs để kiểm soát tỷ lệ của họ?
- 28. JSF: yêu cầu ban đầu và yêu cầu đăng lại?
- 29. Thêm thông số yêu cầu để yêu cầu
- 30. RestTemplate Yêu cầu GET với các tham số yêu cầu
http://nodejs.org/api/modules.html#modules_modules (thật là một uri vô lý) – jAndy
@jAndy Mã nguồn trong chuỗi ở đâu? Tôi chỉ thấy tải từ tệp. – Cartesius00
http://nodejs.org/api/modules.html – Thomas