我有另一个开发人员编写的Node.js项目,由于Babel无法(可能)无法跟踪模块导入的正确路径,因此我在执行时遇到了困难:
main.js中的一行显示为import Splash from 'core/splash'
。
项目的main.js文件位于路径"project_name/webapp/core/main.js"
中
"project_name/webapp/core/"
目录还包含一个名为splash.js
的文件,但据我所知它不是一个包,因为没有与之关联的package.json。我是否可以假设上面的导入行正在尝试加载此文件,但是由于它不是软件包而失败,或者仅仅是因为我没有正确理解目录结构?
我正在使用命令main.js
babel-node .\webapp\core\main.js
我收到的确切错误是:
Error: Cannot find module 'core/splash'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
Node.js版本v8.11.3, babel-cli版本^ 6.26.0, Babel已在全球安装。
答案 0 :(得分:1)
如果您在导入语句(即core/splash
)中指定了绝对路径,则Node.js将假定您正在引用node_modules
目录中的npm模块。
在此示例中,它将查找名为core
的模块,其中包含文件splash.js
。
如果您要导入属于您自己的源代码(不是从npm
注册表中安装)的模块,请改用相对路径。
如果main.js
和splash.js
位于同一目录core
中,则正确的导入语句为:
import Splash from './splash'
前导./
告诉Node.js:“这是一个相对路径,从当前模块的目录开始。”