【问题标题】:Can't import nodejs module using absolute file path (meteor, linux. Works fine on Windows)无法使用绝对文件路径导入 nodejs 模块(流星,linux。在 Windows 上工作正常)
【发布时间】:2019-09-25 06:20:46
【问题描述】:

我正在尝试在 Linux 上的流星项目的 server.js 中导入文件。例如:

 var temp = require('/home/HaveAGitGat/Documents/test.js');

我收到以下错误:

 Error: Cannot find module '/home/HaveAGitGat/Documents/test.js'

令人困惑的是,这在使用流星的 Windows 上运行良好。在没有流星的情况下运行纯 nodejs 文件时,它在 Linux 上也能正常工作。

对解决方案有任何想法吗?

【问题讨论】:

    标签: node.js linux meteor require


    【解决方案1】:

    您可以将测试文件放入您的流星项目中,建议您这样做。在代码中放置绝对路径意味着您被锁定到该文件夹​​结构,这不利于可移植性。

    例如,如果您希望我在您的项目上进行协作,我将不得不修改所有 require 语句以使其正常工作,而当我提交这些更改时,它会为您破坏它。

    这里有一个替代方法:在imports/test 中创建一个文件夹来保存所有测试文件,以便您可以使用如下语句导入它们:

    import testCase1 from '/imports/test/test1
    

    那么您的代码是干净的、可移植的,并且您的项目是独立的。

    更多信息请见https://guide.meteor.com/testing.html

    【讨论】:

    • 感谢您的信息。问题是我正在尝试从用户的 Documents 文件夹中读取用户可配置的数据。我已经配置了所有内容,以便它在操作系统之间正常工作,并且这种方法在我的其他 nodejs 应用程序中运行良好。您无需修改​​ require 语句,因为程序会自动处理路径,以便它始终可以从 Documents 文件夹中读取正确的文件。就像我提到的,它在 Windows 上运行良好,只需要找到适用于 Linux Ubuntu 的解决方案。
    猜你喜欢
    • 2021-06-18
    • 2021-11-13
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多