簡體   English   中英

錯誤 [ERR_MODULE_NOT_FOUND]:找不到 package 'src'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM