导入空类时出错,错误 TS2307:找不到模块“菜单”

Sha*_*ews 0 javascript typescript ecmascript-6 reactjs

我只是想导入一个简单的空白导出类。我不确定为什么它找不到该文件,因为它与导入它的类位于同一目录中。我在谷歌上搜索了类似的错误代码,但没有任何解决方案对我有用,而且这是一个相对简单的问题,所以我很困惑。

错误:

error TS2307: Cannot find module 'menu'
Run Code Online (Sandbox Code Playgroud)

文件夹结构:

node_modules/
src/
    entry.tsx
    menu.tsx
index.html
package-lock.json
package.json
tsconfig.json
webpack.config.js
Run Code Online (Sandbox Code Playgroud)

条目.tsx

import menu from 'menu';
Run Code Online (Sandbox Code Playgroud)

菜单.tsx

export default class menu { }
Run Code Online (Sandbox Code Playgroud)

webpack.config

var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/js/entry.tsx',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        loader: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: [ 'css-loader' ]
        })
      },
      {
        test: /\.tsx?$/,
        loader: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin({
            filename: "bundle.css"
        }),
    new HtmlWebpackPlugin({
      title: 'Custom template',
      template: 'index.html'
    })
  ]
};
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name": "helloworld",
  "version": "1.0.0",
  "description": "Hello there",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack-dev-server",
    "build:prod": "webpack -p"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-preset-env": "^1.6.0",
    "babel-preset-react": "^6.24.1",
    "css-loader": "^0.28.7",
    "extract-text-webpack-plugin": "^3.0.1",
    "html-webpack-plugin": "^2.30.1",
    "react": "^16.0.0",
    "react-dom": "^16.0.0",
    "style-loader": "^0.19.0",
    "ts-loader": "^2.3.7",
    "typescript": "^2.5.3",
    "webpack": "^3.7.1",
    "webpack-dev-server": "^2.9.1"
  },
  "dependencies": {
    "@types/react": "^16.0.13",
    "react": "^16.0.0",
    "react-dom": "^16.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我认为如果您不在“include”行中包含相对路径,Webpack 会尝试加载 Node 包。

尝试更改entry.tsx中的这一行:

import menu from 'menu';

对此:

import menu from './menu';

  • @user1337604 正确。 (2认同)