Vm nodejs

Đây là một thư viện JavaScript nhỏ cố gắng mô phỏng thời gian chạy NodeJS trên máy ảo V8. Nó cố gắng tương thích hoàn toàn với API NodeJS nhất có thể, đồng thời cho phép kết nối các tính năng chọn lọc vào. Hiện tại, các hook được giới hạn trong -procedure

🔍 Tìm thấy sự không nhất quán với API NodeJS chính thức khiến một số mô-đun không hoạt động với máy ảo này?

Tại sao

vm-nodejs khác với vm2 theo nghĩa là nó không cố gắng cung cấp sự cô lập hoàn toàn và do đó, nó nhẹ hơn nhiều. Trên hết, nó cho phép kết nối vào bên trong NodeJS theo cách mà vm2 không cho phép

  • Chạy nhiều chương trình trong một quy trình chia sẻ các phụ thuộc giống nhau trong môi trường có bộ nhớ hạn chế
  • Phát hiện khi tập lệnh được yêu cầu và tải lại các phụ thuộc (yêu cầu theo dõi)

⚠️ Thư viện này hoàn toàn không nhằm cung cấp sự cô lập hoàn toàn, chỉ đơn thuần là một cách để chạy nhiều phiên bản NodeJS trong một quy trình. Nếu bạn cần cách ly hoàn toàn, hãy xem gói vm2

Cài đặt

$ npm i --save vm-nodejs

API

const NodeVM = require('vm-nodejs')

mô-đun. tải lại()

Tải lại mô-đun và tất cả các phần phụ thuộc của nó và trả về một đối tượng Module mới như thể require() đã được gọi lần đầu tiên trên chính mô-đun và các phần phụ thuộc của nó

mô-đun. bọn trẻ

Các đối tượng mô-đun được yêu cầu bởi cái này

mô-đun. xuất khẩu

mô-đun. đối tượng xuất khẩu được tạo bởi hệ thống Mô-đun. Đôi khi điều này không được chấp nhận; . Để thực hiện việc này, hãy gán đối tượng xuất mong muốn cho mô-đun. xuất khẩu. Lưu ý rằng việc gán đối tượng mong muốn cho xuất khẩu sẽ chỉ đơn giản là khởi động lại biến xuất khẩu cục bộ, đây có thể không phải là điều mong muốn

mô-đun. tên tập tin

Tên tệp được giải quyết đầy đủ cho mô-đun

mô-đun. Tôi

Mã định danh cho mô-đun. Thông thường, đây là tên tệp được giải quyết đầy đủ

mô-đun. cha mẹ

Mô-đun đầu tiên yêu cầu mô-đun này

mô-đun. yêu cầu (id)

Cung cấp cách tải một mô-đun như thể yêu cầu () được gọi từ mô-đun ban đầu

NodeVM mới ([tùy chọn])

Tạo một máy ảo NodeJS mới. Hiện tại không có tùy chọn nào

gật đầu. getModule(modulePath)

Hoạt động theo cách tương tự như -procedure, ngoại trừ các đường dẫn được giải quyết tương ứng với thư mục làm việc hiện tại và nó trả về một tham chiếu đến đối tượng Module thay vì xuất của nó

gật đầu. on('yêu cầu', cb)

Sẽ kích hoạt cb mỗi khi một câu lệnh yêu cầu mới được thực thi trong ngữ cảnh của máy ảo NodeJS. Cuộc gọi lại được kích hoạt với một đối số duy nhất e chứa các thuộc tính sau

  • mô-đun. một phiên bản mô-đun đại diện cho mô-đun được yêu cầu

const NodeVM = require('vm-nodejs')

 

const node = new NodeVM()

 

node.on('require', e => {

  console.log(`Required ${e.module.filename}`)

})

 

node.getModule('index.js')

Giấy phép

Giấy phép MIT

PHẦN MỀM ĐƯỢC CUNG CẤP "NGUYÊN TRẠNG", KHÔNG CÓ BẢO ĐẢM DƯỚI BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN CÁC BẢO ĐẢM VỀ KHẢ NĂNG BÁN ĐƯỢC, TÍNH PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ VÀ KHÔNG VI PHẠM. TRONG BẤT KỲ TRƯỜNG HỢP NÀO TÁC GIẢ HOẶC NGƯỜI GIỮ BẢN QUYỀN SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ VỀ BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC TRÁCH NHIỆM PHÁP LÝ KHÁC NÀO, DÙ TRONG MỘT HÀNH ĐỘNG HỢP ĐỒNG, NGOẠI TỆ HOẶC CÁCH NÀO KHÁC, PHÁT SINH TỪ, NGOÀI HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC CÁC GIAO DỊCH KHÁC TRONG

vm trong nút js là gì?

Nút. mô-đun vm cho phép biên dịch và chạy mã trong ngữ cảnh Máy ảo V8 . nút. mô-đun vm không phải là một cơ chế bảo mật. Không sử dụng nó để chạy mã không đáng tin cậy. Mã JavaScript có thể được biên dịch và chạy ngay lập tức hoặc được biên dịch, lưu và chạy sau.

Nút js có chạy trong vm không?

Mô-đun vm trong Node. js có sẵn theo mặc định — không cần NPM. Khi nó được triển khai, chúng tôi có thể xác định mã JS thực tế mà chúng tôi muốn thực thi. Để thực thi mã trong VM, chúng tôi gọi runInThisContext.

Làm cách nào để cài đặt nút js trong vm?

Thiết lập máy ảo trên Azure để chạy Node. .
Tạo một phiên bản VM mới
Cài đặt nginx
Định cấu hình nginx để hoạt động như một máy chủ proxy. Định tuyến tất cả lưu lượng truy cập tới cổng 80 trên máy ảo của bạn tới phiên bản đang chạy của Nút. .
Cài đặt nút. .
Cài đặt pm2 trên toàn cầu

js có vm không?

Công cụ JavaScript được gọi là máy ảo . Về cơ bản tất cả đều giống nhau. Các công cụ JavaScript là các máy ảo được xử lý, vì chúng cho phép bạn thực thi các chương trình máy tính trong một môi trường độc lập với nền tảng.