错误[ERR_MODULE_NOT_FOUND]:找不到软件包“ src”

时间:2020-07-21 03:49:34

标签: javascript node.js npm

假设我的应用看起来像这样

├── index.js
└── src
    ├── do_foo.js

do_foo.js

function foo() {
    return "bar";
}

export default foo;

index.js

import foo from 'src/do_foo';

foo();

运行node index.js会导致以下错误

> node index.js

internal/modules/run_main.js:54
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'src' imported from /mnt/c/Users/*******/Projects/*******/index.js
    at packageResolve (internal/modules/esm/resolve.js:620:9)
    at moduleResolve (internal/modules/esm/resolve.js:659:14)
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:752:11)
    at Loader.resolve (internal/modules/esm/loader.js:97:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:50:40)
    at link (internal/modules/esm/module_job.js:49:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! fetch_courses@1.0.0 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the *******@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /mnt/c/Users/*******/.npm/_logs/2020-07-21T03_38_34_404Z-debug.log

由于我已经设法在这么早的时候搞砸了,所以我认为解决方案必须非常简单。我在这里违反了JavaScript的什么基本规则?

我还要补充一点,我知道如果所有内容都在同一文件夹中,那么所有内容都将起作用,但这不是我的目标。如果可能的话,最好将index.js保留在最外面的目录中。

编辑:我想弄清楚我的问题是是由错字引起的。我的代码在语法上还不错,只是需要相对范围的导入。在编写示例代码时,我输错了一些内容,与最初的问题无关。

2 个答案:

答案 0 :(得分:4)

您必须使用完整的文件路径才能使此工作正常。

import foo from './src/do_foo.js';

console.log(foo());

由于它是实验功能,因此您会收到此警告。

ExperimentalWarning: The ESM module loader is experimental.

答案 1 :(得分:0)

是的,您正在使用打字稿,在 tsconfig 更改 "module":"esnext" 为 "module":"commonjs" 和 package.json "module":"commonjs"。