【问题标题】:node.js module works from command line, not from scriptnode.js 模块从命令行工作,而不是从脚本
【发布时间】:2013-11-26 23:54:27
【问题描述】:

我已经在我的 windows 8.1 机器上安装了 jsdom。

如果我是本地安装的 jsdom 之上的一个目录,我可以调用

node jsdom

一切正常。

但是,如果从同一个目录/密码,我调用一个脚本(在不同的路径)

require("jsdom").jsdom;

我得到了类型的错误

Error: cannot find module 'jsdom'

【问题讨论】:

    标签: node.js jsdom


    【解决方案1】:

    Node 的 CLI 和 require() 的行为略有不同:

    node path使用path.resolve解析

    • 表现得就像您希望操作系统解析路径一样。

    require(path)使用require.resolve解析

    • exact 的行为有点复杂,但基本上如果字符串的开头看起来像包名,它会在node_modules 中查找匹配的包(即看起来不像以.//../ 等开头的文件系统路径。

    在您的情况下,您可以使用 NPM 安装模块(首选):

    npm install jsdom --save
    
    require("jsdom").jsdom;
    

    如果您已手动将文件添加到文件系统,则直接包含该文件:

    require("./jsdom.js").jsdom;
    

    【讨论】:

      最近更新 更多