如何将我的脚本加载到node.js REPL中?

188

我有一个脚本foo.js,里面包含一些函数想要在REPL中使用。

有没有一种方法可以让Node执行我的脚本,然后跳入REPL并具有所有已声明的全局变量,就像我可以使用python -i foo.pyghci foo.hs一样?

12个回答

2

原始回答

type test.js|node -i

打开Node REPL并将test.js中的所有行输入REPL,但由于某些原因,文件结束后Node会退出。

另一个问题是,函数不会被提升。

更好的回答

node -e require('repl').start({useGlobal:true}); -r ./test2.js

那么在test2.js中声明的所有未使用var关键字的全局变量将在REPL中可用

不确定为什么全局作用域中的var a将不可用


8
请在您的答案中添加一些解释。 - mechnicov
似乎在bashtype无法使用。更好的答案是,似乎你只需要在脚本中直接赋值给函数/变量的global,而不必手动启动repl,可以通过node -r noderc.js实现。应该有一种方法来适当地使用“vm.runInContext”,以便从脚本中获取更多的值。 - Gavin Haynes
cat 在 bash/posix 中是 type - Sam Washington

-1

官方的 Node.js REPL 支持异步方法

console.js

const repl = require('repl')
const mongoose = require('mongoose')

const run = async () => {
    await mongoose.connect(process.env.DB_URL, {
        useNewUrlParser: true,
        useUnifiedTopology: true
    })

    const r = repl.start(`(${process.env.NODE_EN}) ⚡️ `)
    r.context.User = require('./src/models/user.model')
    r.context.mongoose = mongoose
    console.log(`Ready `);
}

run()

启动控制台:

NODE_OPTIONS=--experimental-repl-await node console.js

User 模型暴露给控制台

await User.find({})

来源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接