require

package
v0.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

README

fork from https://github.com/dop251/goja_nodejs

Change

  • 优先使用主动注册的 module
  • 编译缓存使用 md5(body) 作为缓存 key
  • 优化 InvalidModuleError 报错信息

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	InvalidModuleError     = errors.New("Invalid module")
	IllegalModuleNameError = errors.New("Illegal module name")

	ModuleFileDoesNotExistError = errors.New("module file does not exist")
)

Functions

func DefaultSourceLoader

func DefaultSourceLoader(filename string) ([]byte, error)

DefaultSourceLoader is used if none was set (see WithLoader()). It simply loads files from the host's filesystem.

func RegisterNativeModule

func RegisterNativeModule(name string, loader ModuleLoader)

func Require

func Require(runtime *js.Runtime, name string) js.Value

Types

type ErrorInvalidModule

type ErrorInvalidModule struct {
	Name string
}

func (ErrorInvalidModule) Error

func (e ErrorInvalidModule) Error() string

type ModuleLoader

type ModuleLoader func(*js.Runtime, *js.Object)

type Option

type Option func(*Registry)

func WithGlobalFolders

func WithGlobalFolders(globalFolders ...string) Option

WithGlobalFolders appends the given paths to the registry's list of global folders to search if the requested module is not found elsewhere. By default, a registry's global folders list is empty. In the reference Node.js implementation, the default global folders list is $NODE_PATH, $HOME/.node_modules, $HOME/.node_libraries and $PREFIX/lib/node, see https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders.

func WithLoader

func WithLoader(srcLoader SourceLoader) Option

WithLoader sets a function which will be called by the require() function in order to get a source code for a module at the given path. The same function will be used to get external source maps. Note, this only affects the modules loaded by the require() function. If you need to use it as a source map loader for code parsed in a different way (such as runtime.RunString() or eval()), use (*Runtime).SetParserOptions()

type Registry

type Registry struct {
	sync.Mutex

	SrcLoader SourceLoader
	// contains filtered or unexported fields
}

Registry contains a cache of compiled modules which can be used by multiple Runtimes

func NewRegistry

func NewRegistry(opts ...Option) *Registry

func NewRegistryWithLoader

func NewRegistryWithLoader(srcLoader SourceLoader) *Registry

func (*Registry) ClearCompliedCache

func (r *Registry) ClearCompliedCache()

func (*Registry) Enable

func (r *Registry) Enable(runtime *js.Runtime) *RequireModule

Enable adds the require() function to the specified runtime.

func (*Registry) RegisterNativeModule

func (r *Registry) RegisterNativeModule(name string, loader ModuleLoader)

type RequireModule

type RequireModule struct {
	// contains filtered or unexported fields
}

func (*RequireModule) Clean

func (r *RequireModule) Clean()

func (*RequireModule) Require

func (r *RequireModule) Require(p string) (ret js.Value, err error)

Require can be used to import modules from Go source (similar to JS require() function).

type SourceLoader

type SourceLoader func(path string) ([]byte, error)

SourceLoader represents a function that returns a file data at a given path. The function should return ModuleFileDoesNotExistError if the file either doesn't exist or is a directory. This error will be ignored by the resolver and the search will continue. Any other errors will be propagated.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL