javascript – Webpack Express EJS:错误:找不到模块“.”

前端之家收集整理的这篇文章主要介绍了javascript – Webpack Express EJS:错误:找不到模块“.”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在用webpack,typescript和ejs编写一个快速的Web应用程序.当遇到一个应该提供.ejs文件的路由时,我收到以下错误
Error: Cannot find module "."
   at webpackMissingModule (/Users/max/Development/test/express-webpack/dist/server.js:20669:74)
   at new View (/Users/max/Development/test/express-webpack/dist/server.js:20669:152)
   at EventEmitter.render (/Users/max/Development/test/express-webpack/dist/server.js:18776:12)
   at ServerResponse.render (/Users/max/Development/test/express-webpack/dist/server.js:20479:7)
   at /Users/max/Development/test/express-webpack/dist/server.js:25508:7
   at Layer.handle [as handle_request] (/Users/max/Development/test/express-webpack/dist/server.js:4524:5)
   at next (/Users/max/Development/test/express-webpack/dist/server.js:4743:13)
   at Route.dispatch (/Users/max/Development/test/express-webpack/dist/server.js:4724:3)
   at Layer.handle [as handle_request] (/Users/max/Development/test/express-webpack/dist/server.js:4524:5)
   at /Users/max/Development/test/express-webpack/dist/server.js:4054:22

这是代码

的package.json:

{
  "name": "express-webpack","version": "1.0.0","description": "","main": "index.js","scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },"author": "","license": "ISC","dependencies": {
    "awesome-typescript-loader": "^3.0.0-beta.18","copy-webpack-plugin": "^4.0.1","debug": "^2.6.0","ejs": "^2.5.5","express": "^4.14.0","json-loader": "^0.5.4","source-map-loader": "^0.1.6","webpack": "^2.2.0-rc.3"
  }
}

webpack.config.js

var CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
    entry: __dirname + "/src/index.js",target: "node",output: {
        filename: "server.js",path: __dirname + "/dist"
    },// Enable sourcemaps for debugging webpack's output.
    devtool: "source-map",resolve: {
        // Add '.ts' and '.tsx' as resolvable extensions.
        extensions: [".webpack.js",".web.js",".ts",".tsx",".js"]
    },module: {
        rules: [
            // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
            { test: /\.tsx?$/,loader: "awesome-typescript-loader" },{ test: /\.json$/,loader: 'json-loader' },// All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
            { enforce: "pre",test: /\.js$/,loader: "source-map-loader" }
        ]
    },plugins: [
        new CopyWebpackPlugin([
            { from: 'src/views',to: 'views' }
        ])
    ],node: {
      fs: "empty"
    }
};

SRC / index.js

var express = require('express');

var app = express();
app.set("view engine","ejs");
app.set("views","./views");
app.get('/',function(req,res,next){
  res.render('index'); // <-- error originates here AFAIK
});
app.listen(8000);

意见/ index.ejs

hello world

复制步骤:

>运行webpack来构建项目
>使用node dist / server.js启动服务器
>访问http:// localhost:8000
>期望看到index.ejs的内容,而不是高于堆栈跟踪

知道出了什么问题吗?

解决方法

我深入研究了webpack生成代码,发现似乎有一个 context parse evaluation的webpack存在漏洞.有一个简单的表达式表达用于要求选定的视图引擎,但它无法解决这个问题.

解决此问题,请在索引中编写

const ejs = require("ejs").__express;
const app = express();
app.set("view engine","ejs");   
app.engine('.ejs',ejs);// <-- this does the trick

但是如果你想要一个明确的解决方案,请在webpack repo上打开一个问题.

猜你在找的JavaScript相关文章