[英]Error [ERR_MODULE_NOT_FOUND]: Cannot find package '.data'
[英]Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'src'
假设我的应用看起来像这样
├── 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
放在最外层的目录中。
编辑:我想澄清我的问题不是由拼写错误引起的。 我的代码在语法上很好,它是需要相对 scope 的导入。 我在编写示例代码时打错了一些东西,这与最初的问题无关。
您必须使用完整的文件路径才能使其正常工作。
import foo from './src/do_foo.js';
console.log(foo());
由于它是一项实验性功能,因此您将收到此警告。
ExperimentalWarning: The ESM module loader is experimental.
是的,您正在使用 typescript,在 tsconfig 中将“module”:“esnext”更改为“module”:“commonjs”,并在 package.Z466DEEC76ECDF5FCA6D38571F6324D:“module.4”
这是另一种方式,虽然是基本的。
在你的 foo.js
您可以运行module.exports = foo;
在您的 index.js 中,您可以运行
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const port = 3000;
app.set('view engine', 'ejs');
app.use(express.urlencoded({ extended: true }));
app.use(express.static(__dirname + '/public'));
const foo = require(__dirname + "/foo.js");
foo();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.